3
我有一個大的存儲過程來爲報表提取數據。我試圖根據特定標準在WHERE
子句中使用兩個不同值中的一個。我無法弄清楚如何使用CASE
聲明來完成這件事,我不斷收到在THEN
部分的錯誤。下面是我想要做的,它是較大存儲過程的一小部分。所以,我在找的是哪裏dlp(DATETIME)
比dlc(DATETIME)
我想用dlp
與@AgeStart
和@AgeEnd
參數來評估,如果沒有的話用dlc
與@AgeStart
和@AgeEnd
評估新。在where子句中使用case語句創建查詢
@AgeStart INT
@AgeEnd INT
SET @Recovery = (
SELECT SUM(ISNULL(M.Paid1, 0))
FROM Master AS M
WHERE M.Status IN ('xxx','yyy')
AND CASE
WHEN COALESCE(M.dlp, '2000-01-01 00:00:00') >
COALESCE(M.dlc, '2000-01-01 00:00:00')
THEN DATEDIFF(dd,M.Received,M.dlp)
>= @AgeStart AND DATEDIFF(dd,M.Received,M.dlp) <= @AgeEnd
ELSE DATEDIFF(dd, M.dlc, M.Received)
>= @AgeStart AND DATEDIFF(dd, M.dlc, M.Received) <= @AgeEnd
END
AND M.Balance >= @OrigBalanceMin AND M.Balance <= @OrigBalanceMax
)
好東西,我是過於複雜的問題。謝謝你們的幫助! –