• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL文でクロス集計をしたい)

SQLでクロス集計をする方法とは?

このQ&Aのポイント
  • SQL文でクロス集計をする方法について学びましょう。
  • データをクロス集計するためのSQL文の書き方について解説します。
  • クロス集計をする際に注意すべきポイントを紹介します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

別テーブルを使わずにとなると、ユオニンクエリを使うことになります。 先に、ユニオンクエリで、数量、金額、数量合計、金額合計 を縦に連結して、これをサブクエリとしてFROM句に入れて、クロス集計クエリにします。 TRANSFORM Sum(値) SELECT 支払先, データ FROM (SELECT T_支払.年月, T_支払.支払先,"数量" AS データ, T_支払.数量 AS 値 FROM T_支払 UNION ALL SELECT T_支払.年月, T_支払.支払先,"金額", T_支払.金額 FROM T_支払 UNION ALL SELECT T_支払.年月, "合計", "数量", T_支払.数量 FROM T_支払 UNION ALL SELECT T_支払.年月, "合計", "金額", T_支払.金額 FROM T_支払) T GROUP BY 支払先, データ ORDER BY 支払先, データ DESC PIVOT 年月;

bobby_jr
質問者

お礼

ありがとうございました。

その他の回答 (1)

回答No.1

下記のようなテーブルを作成しておくと、クロス集計クエリ一つで可能です。 T_種別 ------ ID 種別 1 数量 2 金額 テーブル名を T_支払 とすると下記のSQL文で希望の結果になります。 TRANSFORM Sum(Choose([T_種別].[ID],[数量],[金額])) AS 式1 SELECT IIf([T_種別_1].[ID]=2,"合計",[T_支払].[支払先]) AS 支払先, T_種別.種別 FROM T_支払, T_種別, T_種別 AS T_種別_1 GROUP BY IIf([T_種別_1].[ID]=2,"合計",[T_支払].[支払先]), T_種別.種別 ORDER BY IIf([T_種別_1].[ID]=2,"合計",[T_支払].[支払先]), T_種別.種別 DESC PIVOT T_支払.年月;

bobby_jr
質問者

お礼

ありがとうございます。 希望の結果になりましたが、 出来ることでしたら別テーブルは持ちたくないです。 アクセスのクロス集計を使わなくてもいいです 直接SQL文の入力で結構ですので別の方法はないでしょうか? もしございましたらお願い致します。 わがまま言いますがよろしくお願いします