次のような結果を返すクエリがあるとします。
Project Year Type Amt
PJ00001 2012 1 1000
PJ00001 2012 2 1000
PJ00001 2011 1 1000
PJ00002 2012 1 1000
私が欲しいもの:すべてのプロジェクトには、毎年2行のタイプがあります。行がない場合は、Amt = 0の結果に追加します
。例:
-PJ00001には、2012年にタイプ1,2の2つの行があります->OK。しかし、2011年には、タイプ1の行は1つだけです-> 1つの行を追加します:PJ00001 2011 2 0
-PJ00002にはタイプ1の行が1つだけあります->追加:PJ00002 2012 2 0
簡単にそれを行う方法はありますか?私が今知っている唯一の方法は、PJ_VIEWのようなビューを作成することです。その後:
SELECT *
FROM PJ_VIEW
UNION ALL
SELECT t.PROJECT, t.YEAR_NO, 1 AS TYPE_NO, 0 AS AMT
FROM PJ_VIEW t
WHERE NOT EXISTS (SELECT 1 FROM PJ_VIEW t2 WHERE t2.PROJECT = t.PROJECT AND t2.YEAR_NO = t.YEAR_NO AND t2.TYPE_NO = 1)
UNION ALL
SELECT t.PROJECT, t.YEAR_NO, 2 AS TYPE_NO, 0 AS AMT
FROM PJ_VIEW t
WHERE NOT EXISTS (SELECT 1 FROM PJ_VIEW t2 WHERE t2.PROJECT = t.PROJECT AND t2.YEAR_NO = t.YEAR_NO AND t2.TYPE_NO = 2)