假設我有一個返回結果,這樣的查詢添加一行:SQL時不存在
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行1,2行 - >確定。但在2011年,它只有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)
是否有類型> 2的記錄?或者它總是1或1和2? – Chandu
對於我的問題,它只有1和2.如果答案可以解決一個列表,那麼這是個好消息。 –