我正在尋找where子句中使用變量的case語句的一個很好的示例。變量返回的數字決定了where子句的結果。我的查詢是這樣的:在where子句中使用CASE - 使用參數
IF @RequestType = 99
SELECT @Received = count(*)
FROM Request r
WHERE request_received_date between @beginDate and @endDate
AND request_type_id <> 5
ELSE IF @RequestType = 100
BEGIN
SELECT @Received = count(*)
FROM Request r
WHERE request_received_date between @beginDate and @endDate
END
ELSE
BEGIN
SELECT @Received = count(*)
FROM Request r
WHERE request_received_date between @beginDate and @endDate
AND request_type_id =
(CASE WHEN @RequestType = 1 THEN (1)
WHEN @RequestType = 2 THEN (2)
WHEN @RequestType = 3 THEN (3)
WHEN @RequestType = 4 THEN (4)
WHEN @RequestType = 5 THEN (5)
END)
END
因此,大家可以看到,有7個選項 - 客戶願意與他們在報告中看到的數據量靈活。這看起來很麻煩,但我想不出有任何其他的方式來做到這一點。
請編輯您的問題以包括SQL的版本作爲其中一個標記。 – Dijkgraaf
該病例陳述的要點是什麼?爲什麼不只是:'request_type_id = @ RequestType' –