• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLで部分的にGROUP BYしたいとき)

SQLで部分的にGROUP BYしたいとき

このQ&Aのポイント
  • 部分的にGROUP BYで集計するためのSQLを探しています。
  • マイナスの金額を集約する方法を知りたいです。
  • 現在のSQLでは効率的ではないため、改善方法を教えてください。

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

  • ベストアンサー
  • dda167
  • ベストアンサー率76% (55/72)
回答No.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;

ultra789
質問者

お礼

実は一意になるキーはすでにカラムにもっています。 それをGROUP BYのELSEに入れれば、うまくいきそうです! 素晴らしい回答ありがとうございます!

その他の回答 (1)

回答No.1

SELECT 日付,SUM(金額) FROM 出納帳 GROUP BY 日付,CASE WHEN 金額>=0 THEN 金額 ELSE 0 END ORDER BY 1,2 でどうでしょうか。 (ただし、正の金額に同じ物があると合計されてしまいます)

ultra789
質問者

お礼

なるほど!GROUP BYのなかでCASE文を使えばいいのですね! 正の金額に同じものがあると合計される仕様は許容できないので、このままは利用できませんが、 勉強になりました! ありがとうございます!

関連するQ&A