※ ChatGPTを利用し、要約された質問です(原文:GROUP BY 句を 2つ組み合わせる方法)
GROUP BY 句を2つ組み合わせる方法
このQ&Aのポイント
GROUP BY 句を2つ組み合わせて、集計の集計を行う方法について教えてください。
対象SQLでは、商品コードを追加して商品コード単位で金額の合計値を取得し、その合計値から営業所単位の金額合計値を求める手法がありますか?
具体的な対象SQLの記述例とともに教えていただけると助かります。
【質問】
GROUP BY 句を 2つ組み合わせて、集計の集計を行う方法ってありますか?
下記対象SQLで集計を行うとメインのF_在庫履歴には、商品コードがあり、計算値の金額が
正常に出力されません。
一度、GROUP BY 句に商品コードを追加し、商品コード単位の金額合計値を取得後、
その合計値のSQLから、下記の様に、営業所単位の金額合計値を求める手法はありますでしょうか。
よろしくお願いします。
●対象SQL
SELECT TO_NUMBER(SUBSTR(S.処理対象年月日,1,6)) AS 処理対象年月
, S.内部CD AS 部CD
, S.管理営業所CD AS 営業所CD
, 631 AS 科目CD
, (SUM(S.前月末在庫数) + SUM(S.仕入数) - SUM(S.仕入返品数) + SUM(S.移動入庫数) + SUM(S.調整入庫数) - SUM(S.売上数) + SUM(S.売上返品数) - SUM(S.移動出庫数) - SUM(S.調整出庫数) - SUM(S.仮売上数量) - SUM(S.工事出庫数量)) * MAX(DISTINCT S.在庫原価) * -1 AS 金額
FROM F_在庫履歴 S
WHERE S.処理対象年月日 = W処理対象年月日
GROUP BY S.内部CD,S.管理営業所CD, TO_NUMBER(SUBSTR(S.処理対象年月日,1,6));
補足
一旦、商品コード単位で集計して、その結果を、営業所単位で集計を行いたいです。 イメージとしては、下記のSQLなんですが・・・・ エラーで通らなく困っています。 SELECT T1.処理対象年月 , T1.部CD , T1.部署名 , T1.営業所CD , T1.営業所名 , T1.並び順 , T1.商品CD , T1.仕訳区分 , T1.科目CD1 , T1.科目CD , T1.科目名 , SUM(T1.金額) , T1.出力FLG ( SELECT TO_NUMBER(SUBSTR(S.処理対象年月日,1,6)) AS 処理対象年月 , M1.内部CD AS 部CD , M3.略式名称 AS 部署名 , S.管理営業所CD AS 営業所CD , M1.略式名称 AS 営業所名 , M1.表示順 AS 並び順 , S.商品CD AS 商品CD , 14 AS 仕訳区分 , 6 AS 科目CD1 , 631 AS 科目CD , '期末商品棚卸高' AS 科目名 , (SUM(S.前月末在庫数) + SUM(S.仕入数) - SUM(S.仕入返品数) + SUM(S.移動入庫数) + SUM(S.調整入庫数) - SUM(S.売上数) + SUM(S.売上返品数) - SUM(S.移動出庫数) - SUM(S.調整出庫数) - SUM(S.仮売上数量) - SUM(S.工事出庫数量)) * MAX(DISTINCT S.在庫原価) * -1 AS 金額 , 0 AS 出力FLG FROM F_在庫履歴 S LEFT JOIN M_名称 M1 ON M1.種別CD = 1 AND M1.対象CD = S.管理営業所CD LEFT JOIN M_名称 M3 ON M3.種別CD = 3 AND M3.対象CD = M1.内部CD WHERE S.処理対象年月日 = 20140331 GROUP BY M1.内部CD, M3.略式名称, S.管理営業所CD, M1.略式名称, M1.表示順, S.商品CD, TO_NUMBER(SUBSTR(S.処理対象年月日,1,6)) ) T1; GROUP BY T1.内部CD, T1.略式名称, T1.管理営業所CD, T1.略式名称, T1.表示順, TO_NUMBER(SUBSTR(S.処理対象年月日,1,6))