- 締切済み
sqlで条件によってなにかをしたいです。
テーブルTB_Aの項目 NUMBER1,NUMBER2,RESULT_CNT,SUM_CNTがあります 四つの項目は全部画面表示項目です。 ------------------------------------------- (1)NUMBER1がNULLの場合は画面のNUMBER1にNUMBER2を表示したいです。 ------------------------------------------- (2)仮に画面に2レコードが表示されたとしましょう。 NUMBER1,NUMBER2,RESULT_CNT,SUM_CNT 100000 200000 50 100 →行1 100001 200000 50 100 →行2 その時 NUMBER2がNULLではない AND 行1と行2の番号が同じの場合 行1と行2のSUM(RESULT_CNT)し、SUM_CNTに表示したいです。 よろしく、お願いいたします。 -------------------------------------------
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- 3rd_001
- ベストアンサー率66% (115/174)
(1) NVLかCASEを使う。 (2) 分析関数を使う。 以下のようなSQLで可能です。 select * from TB_A; NUMBER1 NUMBER2 RESULT_CNT ---------- ---------- ---------- 100000 200000 50 100001 200000 50 100000 10 100001 500000 30 select case when NUMBER1 is null then NUMBER2 else NUMBER1 end AS NUMBER1, NUMBER2, RESULT_CNT, SUM(RESULT_CNT) over(partition by NUMBER2) AS SUM_CNT from TB_A; NUMBER1 NUMBER2 RESULT_CNT SUM_CNT ---------- ---------- ---------- ---------- 100000 100000 10 10 100000 200000 50 100 100001 200000 50 100 100001 500000 30 30