如何將以下WHERE CASE語句更改爲bool以使語句正常工作?它給了我一個錯誤「在期望條件的上下文中指定的非布爾類型的表達式。」CASE語句布爾錯誤
WHERE (dma.DeviceId = @DeviceID AND dma.AssociationStart = @Start AND dma.AssociationEnd = @End) AND
CASE WHEN (dma.AssociationEnd IS NOT NULL)
THEN (SELECT m.TimeStamp FROM Measurements m WHERE m.TimeStamp BETWEEN @Start AND @End)
ELSE
(SELECT m.TimeStamp FROM Measurements m WHERE m.TimeStamp BETWEEN @Start AND (SELECT SYSDATETIMEOFFSET()))
END
嘗試改變'(SELECT SYSDATETIMEOFFSET())'只是'SYSDATETIMEOFFSET() '。它可能不會直接解決你的問題,但它會讓你的代碼更好閱讀。 – 2011-06-09 16:02:44
看到整個查詢,而不僅僅是'WHERE'子句對上下文有用。 – dnagirl 2011-06-09 16:05:25
看起來你錯過了一個比較。在WHERE子句中,您需要將該CASE語句的結果與其他內容進行比較。 – 2011-06-09 16:06:11