【发布时间】:2016-05-20 22:34:51
【问题描述】:
我正在尝试在 where 子句中编写 case 语句。以下是我的查询。我想根据工作日执行查询。基本上,如果是星期一,则需要 datecreated = getdate()-3 如果是星期二,则它需要是在 getdate()-3 和 getdate()-1 之间创建的范围日期 如果是周三-周五,则需要 datecreated = getdate()-1
SELECT Count(dispute_reference_no)AS reg_inc
FROM mytable
WHERE reasoncd IN ('b2', 'b3')
AND datecreated = (
CASE
WHEN Datename(weekday,Getdate()) = 'Monday' THEN dbo.Fn_getdateonly(Getdate()-3))
WHEN datename(weekday,getdate()) = 'tuesday' THEN (dbo.fn_getdateonly(getdate()-3)
AND dbo.fn_getdateonly(getdate()))
ELSE dbo.fn_getdateonly(getdate()-1)
END)
上面的代码不起作用。它不会让我在 case 语句中添加范围。
【问题讨论】:
-
很难知道你想要什么,但你的括号放错了地方
-
正确使用
CASE的方法是CASE WHEN ... WHEN ... END你的END与Case无关 -
忘记错误。你的意思是
need to be a range datecreated你不能在CASE上创建一个范围并与单个值进行比较 -
好的,所以如果工作日是星期二,那么我需要说在 getdate()-3 和 getdate()-1 之间创建的日期