2012-05-22 66 views
0

我想執行下面的查詢。左連接更新?

我得到相同的列,但連續兩天。我插入的值是day2.Value - day1.Value。

當TAB2不包含值(第2天),要插入的值應該僅僅是0 - day1.Value

不工作的部分是這個-day1.Value當我有tab1的數據,但不TAB2。相反,我只是得到一個null?

UPDATE tab2 
SET Change = ISNULL(tab2.Value ,0) - ISNULL(tab1.Value ,0) 
FROM Table_Name tab1 
LEFT OUTER JOIN Table_Name tab2 
    ON tab2.COBDate = '2012-5-18' 
    AND tab1.FileName = tab2.FileName 
    AND tab1.ID = tab2.ID 
    AND tab1.ScenarioID = tab2.ScenarioID 
WHERE tab1.COBDate = '2012-5-17' 
    AND tab1.FileName = 'GBP.csv' 
+0

如果tab2爲空,連接中的第一個子句將阻止返回數據,因爲永遠不會找到該值。 – Dave

+0

我刪除了tab2.COBDate ='2012-5-18',它仍然沒有工作.... – mezamorphic

回答

0

嘗試使用COALESCE()?

UPDATE tab2 
SET Change = COALESCE(tab2.Value ,0) - COALESCE(tab1.Value ,0) 
FROM Table_Name tab1 
LEFT OUTER JOIN 
Table_Name tab2 
ON tab2.COBDate = '2012-5-18' AND 
tab1.FileName = tab2.FileName AND 
tab1.ID = tab2.ID AND 
tab1.ScenarioID = tab2.ScenarioID 
WHERE tab1.COBDate = '2012-5-17' AND tab1.FileName = 'GBP.csv' 
+0

上面的傢伙的評論沒有工作,但它看起來像他可以有一個點,而不是數據格式,但行選擇了beign? – mezamorphic