我有這個連接:加入計算不起作用?
UPDATE Table_Name
SET Change = isnull(tab2.Value,0) - tab1.Value
FROM
(SELECT Date,ID,ID,FileName,Value FROM Table_Name WHERE FileName = 'x' AND Date = '2012-05-17') tab1
LEFT OUTER JOIN
(SELECT Date,ID,TradeID,FileName,Value FROM Table_Name WHERE FileName = 'x' AND Date = '2012-05-18') tab2
ON tab1.FileName = tab2.FileName AND
tab1.ID = tab2.ID AND
tab1.ID = tab2.ID
正如你所看到的,它是一個左外連接。但是,如果我有5月17日的數據,而5月18日沒有數據,則插入的值應該是-17th.Value(因爲一般計算爲18th.Value - 17th.Value和18th.Value將爲零)。
如果我在插入部分的下面放置一個select語句(用於調試),這顯示正確,但是,當我刪除SELECT語句並在SET部分執行計算時,它不起作用。我最終得到了null的變化值,在那裏找不到五月十八日的匹配。
編輯:我應該加我不確定我是否需要左連接或左外連接。我希望返回tab1中的所有行,如果它不存在於tab2中,則Change值應該是-tab1.Value,而不是tab2.Value - tab1.Value。
您正在對第一個值進行ISNULL檢查而不是第二個值,這可能是一個問題嗎? –
@PaulMcCowat'EXISTS'不允許他從該表中取回數值。他不會在第二個字段有'NULL',因爲它是源表而不是'JOIN'ed表 – JNK
在tab2.value是NULL的計算中你得到了什麼值? – JNK