我正在尝试在SQL Server中为报表参数设计CASE语句。 该报告显示了设定日期的时间范围。 expdate。
参数以字符串格式发送:
'All', '30', '31', '61', '91', '121', '150', '181+'
尝试开发一个将返回的CASE
语句:
WHERE expdate
CASE WHEN Timeframe = 'All' Then expdate --All Dates
CASE WHEN timeframe=30 THEN expdate between 0 and 30 --using datediff from today
CASE WHEN timeframe=31 THEN expdate between 31 and 60 --using datediff
CASE WHEN timeframe=61 THEN expdate between 61 and 90 --using datediff
...
如果有更好的方法来执行此操作而不是CASE
条款中的WHERE
语句,我很满意,但这就是我过去的做法。
由于
答案 0 :(得分:4)
我会使用(AND)OR(AND)结构,如下所示:
WHERE (timeframe='All')
OR (timeframe='30' AND expdate between 0 and 30)
OR (timeframe='31' AND expdate between 31 and 60)
OR (...
答案 1 :(得分:1)
使用make条件时,OR和AND不使用大小写。 我假设expdate应该存储一天。喜欢这个
WHERE (Timeframe = 'All' AND expdate=expdate) --All Dates
OR( timeframe=30 AND expdate between 0 and 30 )--using datediff from today
OR( timeframe=31 AND expdate between 31 and 60 )--using datediff
OR (timeframe=61 AND expdate between 61 and 90) --using datediff