• 締切済み

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に表示したいです。  よろしく、お願いいたします。 -------------------------------------------

みんなの回答

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.1

(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

関連するQ&A