這指的是我以前的帖子:LinkSQL更換日期值,如果日期是假期或週末
系統:SQL Server 2012中
有了這個劇本我拿週五值如果CutoffDate的日子週六或週日。
SELECT DISTINCT dbo.ECB.Currency + '-' + CAST(dbo.myTable.CutoffDate AS varchar(30)) AS ComboCurrDate, dbo.ECB.Rate AS ECBrate
FROM dbo.ECB INNER JOIN
dbo.myTable ON dbo.ECB.Date = CASE WHEN datepart(weekday, dbo.myTable.CutoffDate) IN (6, 7) THEN dateadd(d, - ((datepart(weekday,
dbo.myTable.CutoffDate) + 1 + @@DATEFIRST) % 7), dbo.myTable.CutoffDate) ELSE dbo.myTable.CutoffDate END AND
dbo.ECB.Currency = dbo.myTable.InvoiceCurrency
WHERE (dbo.myTable.InvoiceCurrency NOT LIKE 'EUR%')
但是現在我需要重寫這個來處理節假日。或者更好的辦法是處理ECB表中不存在的記錄。
例如:對於3月29日星期五,ECB表中沒有記錄,但myTable.CutoffDate設置爲此日期。 使用上面的腳本,我今天沒有得到值。
我現在怎麼能把28號的ECB值分配給CutoffDate?
一般情況:如果ECB表中沒有一天的記錄,則嘗試ECB表內的前一個日期,依此類推。
希望我能解釋清楚。
謝謝你的幫助。
戈登:我不得不刪除INNER JOIN來讓它工作。 「錯誤的語法」。數據看起來不錯。你能否確認內部連接是否需要? – SvenB
好吧,它似乎沒有Inner Join Stmt工作,所以我會將其標記爲正確的答案。謝謝。 – SvenB