我正在寻找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' –