Microsoft Access 掲示板

ACCESSでグループ化した際にグループ化された各行の番号を1つのフィールドに列挙したい

15 コメント
views
4 フォロー

お世話になります。

下記のテーブルがあるとします。

テーブルA
売上ID 商品ID 売上数
1    A    10
2    A    20
3    B    30
4    B    40
5    A    50

こちらをクエリで商品IDと売上数でグループ化して売上数合計を出します。

商品ID 売上数の合計
A    80
B    70

このクエリの各行において、もし可能であれば、集計元の商品IDを別フィールドで列挙できたらと思っています。

商品ID 売上数の合計 商品ID
A    80      1,2,5
B    70      3,4

のようなイメージです。

別にソフトを作らず、ACCESSでこのような処理を行うのは可能でしょうか。

どうぞよろしくお願い申し上げます。

けい
作成: 2024/03/18 (月) 12:03:05
通報 ...
1
りんご 2024/03/18 (月) 12:23:28 935bc@0e907

可能ですよ。でも、やる意味が全くないので、そんな事はやりません。

2
けい 2024/03/18 (月) 12:38:15 e407a@5432f

ありがとうございます。
業務上必要なことが出てきまして。

3
りんご 2024/03/18 (月) 13:09:03 935bc@0e907 >> 2

昭和ならば、それで許されました。現在は、遅かれ早かれ契約不適合責任や善管注意義務が問われる可能性がありませんか?きちんと専門家に外注しましょう。

4
けい 2024/03/18 (月) 13:14:21 e407a@5432f

ありがとうございます。
元々自社開発なのです。
ソフトで作りこむ方法もあるのですが、質問させていただきました。

5
すずやん 2024/03/18 (月) 13:59:58

おそらく下記のSQLを参考につくることができるのではないでしょうか。

https://sql55.com/query/generate-csv-string.php

6
すずやん 2024/03/18 (月) 14:04:36 >> 5

またはこれでしょうか。
https://webbibouroku.com/Blog/Article/forxmlpath

SELECT
SUM(売上数)
, (
    SELECT 売上ID + ','
    FROM テーブルA
    WHERE
        商品ID = t1.商品ID
    FOR XML PATH('')
) AS 売上IDグループ
FROM テーブルA as t1
GROUP BY 商品ID
8

ありがとうございます。
試してみたいと思います。

11

今現在、構文エラーが出てしまいます。
引き続き検討させていただきます。

7
hiroton 2024/03/18 (月) 14:07:52 d12eb@f966d

ACCESSのクエリでFOR XML PATH ('')は使えないんじゃないですかねぇ

グループ内のデータを横連結する(hatena chipsさん)

9

ありがとうございます。
試してみたいと思います。

12

今現在、構文エラーが出てしまいます。
引き続き検討させていただきます。

15
すずやん 2024/03/19 (火) 14:49:03 >> 7

>ACCESSのクエリでFOR XML PATH ('')は使えない
そうでしたか・・・失礼しました!😱

10
けい 2024/03/18 (月) 15:02:12 408ff@5432f

質問文で、
間違いがありました。

商品ID 売上数の合計 商品ID(※)
A    80      1,2,5
B    70      3,4

※の部分は、商品IDではなく、売上IDでした。

申し訳ございません。

よろしくお願いします。

13

最終目的が印刷出力なら、レポートで可能です。下記を参考にしてください。

グループ内のデータを横連結する - hatena chips

クエリでどうしても必要なら、DJoin関数を使用すれば可能です。
下記をご参考に。

DJoin 関数 - リスト文字列を取得する方法

14

ありがとうございます!