SQL。項目内のフラグを判断して、SUMしたい。
やりたいこととしては、ymdとnoとidで一つにデータをまとめ、
各レコードの持つフラグ(a,b)の状態次第(両方trueならば)で、
SUMする項目(num1,num2)を適切に変更したいです。
下記みたいな感じでやってみたものの、まとめ方が悪いらしく期待した答えが出せません。
(何だかんだいじってみても同様、そして、張り付けたSQLは多分エラー。)
考え方が悪いのか、やり方が悪いのか、どなたかご教示いただきたく、よろしくお願いします。
----------------------------------------
実行SQL
select
ymd,no,id,
SUM(
case
when max(a) and max(b)
then
num1
else
num2
end
)
abc
from
(
select
'20180423' ymd,1 no,1 id,true a,true b,100 num1,300 num2
union
select
'20180423' ymd,1 no,1 id,false a,true b,200 num1,400 num2
union
select
'20180424' ymd,1 no,1 id,false a,false b,300 num1,500 num2
union
select
'20180424' ymd,1 no,1 id,true a,true b,400 num1,600 num2
union
select
'20180424' ymd,1 no,2 id,false a,true b,500 num1,700 num2
)table_1
group by ymd,no,id
----------------------------------------
期待している答え
ymd,no,id,abc
20180423,1,1,500
20180424,1,1,900
20180424,1,2,700
----------------------------------------
お礼
ありがとうございます。 以下のようにしたら動作しました。 SELECT MAX(sum_buynum) FROM (SELECT RCT_NO, SUM(BUYNUM) AS sum_buynum FROM TRN_RECEIPT_DETAILS GROUP BY RCT_NO ) AS P1;