
Oracle9iのSQLPLUSにて、select結果の最終行に合計を出力したいだけなのですが、以下のようにcase when~と、sumを併用した場合に正しい合計値が集計されません。
select
AAA,BBB,CCC,sum(DDD),(case when sum(EEE < 0 then sum(EEE-(EEE*2)) else sum(EEE) end)
from
table_A
group by
GROUPING SETS(AAA,BBB,CCC),());
AAA,BBB,CCC,270,270
AAA,BBB,CCC,-270,-270
AAA,BBB,CCC,60,60
, , ,60,600
600×⇒60○
もしくは他に最終行にうまく合計値を出力する方法はありますでしょうか?
よろしくお願いします。
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),());
No.1
- 回答日時:
このクエリは本当に正しいですか?私には
(case when sum(EEE) < 0 then sum(EEE-(EEE*2)) else sum(EEE) end)
というのはABS(SUM(EEE))と同じにしか見えないので、クエリの5カラム目にマイナスが返ってくる理由がわからないのですが。
EEE列がどんな状態だと、マイナスになるのでしょうか?
この回答への補足
ご回答ありがとうございます。
間違いがありましたので訂正致します。
(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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CASE文内での計算
-
文字列の集計的な結合(文字列の...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
truncate tableを使って複数の...
-
フラグをたてるってどういうこ...
-
オラクルのUPDATEで複数テーブル
-
PRIMARY KEYのコピー
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
PostgreSQLのtimestamp型で時間...
-
追加クエリで重複データなしで...
-
UPDATEの更新前の値を取得したい
-
ACCESSのVBAにてExcelに行...
-
1つのSQLで2段階の抽出を行い...
-
Accessの構成をコピーしたい
-
CSVファイルを読み込んでテーブ...
-
既存データをINSERT文にして出...
-
DB2でテーブルのサイズを見たい
-
データ削除とSQL*Loaderでのイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UNION ALLでつなげた複数ビュー...
-
小数点のある数値で整数部のみ...
-
SQLにて列の値を一まとめにして...
-
WHERE 正規表現
-
case whenとsum関数の併用について
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
SQLサーバに対するSQL文で抽出...
-
UPDATEで既存のレコードに文字...
-
エラーを起こす方法
-
truncate tableを使って複数の...
-
既存データをINSERT文にして出...
-
timestampのデータはどのように...
-
オラクルのUPDATEで複数テーブル
-
SQLで、Join句で結合したテ...
-
PostgreSQLのtimestamp型で時間...
-
Accessの構成をコピーしたい
-
'modify' 付近に不適切な構文が...
おすすめ情報