電子書籍の厳選無料作品が豊富!

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

A 回答 (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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す