- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLで部分的にGROUP BYしたいとき)
SQLで部分的にGROUP BYしたいとき
このQ&Aのポイント
- 部分的にGROUP BYで集計するためのSQLを探しています。
- マイナスの金額を集約する方法を知りたいです。
- 現在のSQLでは効率的ではないため、改善方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
--綺麗かどうかはともかく、かなり無理やり SELECT 日付, SUM(金額) AS 金額 FROM ( SELECT 日付, 金額, ROW_NUMBER() OVER (PARTITION BY 日付 ORDER BY 金額) AS id FROM 出納帳 ) GROUP BY 日付, CASE WHEN 金額 < 0 THEN 0 ELSE id END;
その他の回答 (1)
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
回答No.1
SELECT 日付,SUM(金額) FROM 出納帳 GROUP BY 日付,CASE WHEN 金額>=0 THEN 金額 ELSE 0 END ORDER BY 1,2 でどうでしょうか。 (ただし、正の金額に同じ物があると合計されてしまいます)
質問者
お礼
なるほど!GROUP BYのなかでCASE文を使えばいいのですね! 正の金額に同じものがあると合計される仕様は許容できないので、このままは利用できませんが、 勉強になりました! ありがとうございます!
お礼
実は一意になるキーはすでにカラムにもっています。 それをGROUP BYのELSEに入れれば、うまくいきそうです! 素晴らしい回答ありがとうございます!