• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:case whenとsum関数の併用について)

Oracle9iのSQLPLUSでcase whenとsum関数を併用した場合の問題

このQ&Aのポイント
  • Oracle9iのSQLPLUSでselect結果の最終行に合計を出力したいが、case whenとsum関数を併用した場合に正しい合計値が集計されない
  • table_AのAAA,BBB,CCCごとにグループ化してsum(DDD)を計算する際、case when文内でのsum(EEE)が正しく計算されない
  • 最終行に正しい合計値を表示する他の方法が存在するか確認したい

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

そういうことですか。 集計前に判断させればいいのでは? SELECT AAA,BBB,CCC,SUM(DDD), SUM(CASE WHEN EEE < 0 THEN FFF*-1 ELSE FFF END) FROM TABLE_A GROUP BY GROUPING SETS ((AAA,BBB,CCC),());

ryozyryozy
質問者

お礼

そんなことができたんですね。。 勉強不足でした。 どうもありがとうございました。

その他の回答 (1)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

このクエリは本当に正しいですか?私には (case when sum(EEE) < 0 then sum(EEE-(EEE*2)) else sum(EEE) end) というのはABS(SUM(EEE))と同じにしか見えないので、クエリの5カラム目にマイナスが返ってくる理由がわからないのですが。 EEE列がどんな状態だと、マイナスになるのでしょうか?

ryozyryozy
質問者

補足

ご回答ありがとうございます。 間違いがありましたので訂正致します。 (case when sum(EEE) < 0 then sum(FFF-(FFF*2)) else sum(FFF) end) ↑例えば、EEE列が100、FFF列も100の場合、FFF列を100で、EEE列が-100、FFF列が100の場合、FFF列を-100にするものです。 申し訳ありませんでした。 宜しくお願い致します。

関連するQ&A