左连接更新?

时间:2012-05-22 10:57:30

标签: sql sql-server

我正在尝试执行以下查询。

我正在获得相同的专栏,但连续两天。我插入的值是day2.Value - day1.Value。

当tab2不包含值(day2)时,要插入的值应为0 - day1.Value

当我有tab1但不是tab2的数据时,这个-day1.Value不起作用的部分。相反,我只是得到一个空?

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'

1 个答案:

答案 0 :(得分: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'