0

以下のクエリを実行しようとしています。

同じ列を取得していますが、2 日間連続しています。挿入する値は day2.Value - day1.Value です。

tab2 に値 (day2) が含まれていない場合、挿入される値は 0 - day1.Value になります。

tab1 のデータはあるが tab2 のデータがない場合、機能しない部分はこの -day1.Value です。代わりに、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'
4

1 に答える 1

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'
于 2012-05-22T11:01:40.407 に答える