dポイントプレゼントキャンペーン実施中!

SQL抽出方法に悩んでいます④




度々で恐縮ですが、質問させてください。


(TABLE1)
営業所,顧客番号,代表顧客番号,氏名,売上日,売上区分,販売数量,販売金額(税込),消費税
1000,900001,900001,田中太郎,20180801,1,0,0,0    ①
1000,000001,900001,田中太郎,20180801,1,1,1080,80    ②
1000,000002,900001,田中太郎,20180801,1,2,2160,160    ③
1000,000002,900001,田中太郎,20180801,2,-1,-540,-40    ④
1000,000003,000000,佐藤三郎,20180730,1,4,3240,240    ⑤
1000,000003,000000,佐藤三郎,20180802,1,1,540,40    ⑥
2000,000001,000000,村井四郎,20180803,1,5,4320,320    ⑦
2000,000001,000000,村井四郎,20180803,2,-2,-324,-24    ⑧


(TABLE2)
営業所,顧客番号,代表顧客番号,氏名,売上日,売上区分,販売数量,販売金額(税込),消費税
1000,900001,900001,田中太郎,20180801,1,2,2700,200    計算結果は②③④の合算を①の代表顧客へ反映
1000,000003,000000,佐藤三郎,20180730,1,4,3240,240    計算結果は⑤のみ
1000,000003,000000,佐藤三郎,20180802,1,1,540,40    計算結果は⑥のみ
2000,000001,000000,村井四郎,20180803,1,3,3996,296    計算結果は⑦⑧の合算

TABLE1には商品売上金額データが入っており、
TABLE2に記載している方法にて結果を求めたいと考えていますが、
どのように構築したら良いのでしょうか。

A 回答 (3件)

INSERT INTO TABLE2(営業所,顧客番号,代表顧客番号,氏名,売上日,売上区分,販売数量,"販売金額(税込)",消費税)


SELECT 営業所
, CASE 代表顧客番号 WHEN '000000' THEN 顧客番号 ELSE 代表顧客番号 END AS 顧客番号
, 代表顧客番号
, 氏名
, 売上日
, CASE WHEN SUM(CASE 売上区分 WHEN '1' THEN 販売数量 WHEN '2' THEN -販売数量 END) < 0 THEN MAX(売上区分) ELSE MIN(売上区分) END AS 売上区分
, SUM(CASE 売上区分 WHEN '1' THEN 販売数量 WHEN '2' THEN -販売数量 END) AS 販売数量
, SUM(CASE 売上区分 WHEN '1' THEN "販売金額(税込)" WHEN '2' THEN -"販売金額(税込)" END) AS "販売金額(税込)"
, SUM(CASE 売上区分 WHEN '1' THEN 消費税 WHEN '2' THEN -消費税 END) AS 消費税
FROM TABLE1
GROUP BY 営業所
, CASE 代表顧客番号 WHEN '000000' THEN 顧客番号 ELSE 代表顧客番号 END
, 代表顧客番号
, 氏名
, 売上日
    • good
    • 1
この回答へのお礼

お礼が遅くなり、申し訳ございません。

SUM文の中でも、条件をうまく使えばマイナス計算処理もできそうですね。

この悩みも解決できそうです。良い処理方法をご教授頂き、ありがとうございました。

お礼日時:2018/08/06 20:54

INSERT INTO TABLE2(営業所,顧客番号,代表顧客番号,氏名,売上日,売上区分,販売数量,"販売金額(税込)",消費税)


SELECT 営業所
, CASE 代表顧客番号 WHEN '000000' THEN 顧客番号 ELSE 代表顧客番号 END AS 顧客番号
, 代表顧客番号
, 氏名
, 売上日
, CASE WHEN SUM(販売数量) < 0 THEN MAX(売上区分) ELSE MIN(売上区分) END AS 売上区分
, SUM(販売数量) AS 販売数量
, SUM("販売金額(税込)") AS "販売金額(税込)"
, SUM(消費税) AS 消費税
FROM TABLE1
GROUP BY 営業所
, CASE 代表顧客番号 WHEN '000000' THEN 顧客番号 ELSE 代表顧客番号 END
, 代表顧客番号
, 氏名
, 売上日
    • good
    • 1
この回答へのお礼

いつも教えていただき、ありがとうございます。
こういう作り方があるんだと、毎回発見ばかりで参考になります。

追加で質問となりますが、TABLE1の販売数量・販売金額・消費税などの数値項目でマイナスの場合でもマイナス表記されない(売上区分’2’がマイナスの位置づけです)としても、TABLE2で同様の結果を求めたい時の集計はできるのでしょうか。

(TABLE1:処理前)
営業所,顧客番号,代表顧客番号,氏名,売上日,売上区分,販売数量,販売金額(税込),消費税
1000,900001,900001,田中太郎,20180801,1,0,0,0    ①
1000,000001,900001,田中太郎,20180801,1,1,1080,80    ②
1000,000002,900001,田中太郎,20180801,1,2,2160,160    ③
1000,000002,900001,田中太郎,20180801,2,1,540,40    ④
1000,000003,000000,佐藤三郎,20180730,1,4,3240,240    ⑤
1000,000003,000000,佐藤三郎,20180802,1,1,540,40    ⑥
2000,000001,000000,村井四郎,20180803,1,5,4320,320    ⑦
2000,000001,000000,村井四郎,20180803,2,2,324,24    ⑧


(TABLE2:処理後)
営業所,顧客番号,代表顧客番号,氏名,売上日,売上区分,販売数量,販売金額(税込),消費税
1000,900001,900001,田中太郎,20180801,1,2,2700,200    計算結果は②③④の合算を①の代表顧客へ反映
1000,000003,000000,佐藤三郎,20180730,1,4,3240,240    計算結果は⑤のみ
1000,000003,000000,佐藤三郎,20180802,1,1,540,40    計算結果は⑥のみ
2000,000001,000000,村井四郎,20180803,1,3,3996,296    計算結果は⑦⑧の合算

お礼日時:2018/08/02 18:30

SELECT


営業所
, 顧客番号
, 代表顧客番号
, 氏名
, 売上日
, 1 AS 売上区分
, SUM(販売数量) AS 販売数量
, SUM(販売金額(税込)) AS 販売金額(税込)
, SUM(消費税) AS 消費税
FROM
TABLE1
GROUP BY
営業所
, 顧客番号
, 代表顧客番号
, 氏名
, 売上日
    • good
    • 1
この回答へのお礼

回答していただき、ありがとうございます。

抽出では教えていただいた内容で処理できそうです。
参考にさせていただきます。

お礼日時:2018/08/02 18:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!