取决于where子句中星期几的案例声明

疯狂编码器

我正在尝试在where子句中编写一个case语句。以下是我的查询。我想根据工作日执行查询。基本上,如果它的星期一需要被创建日期= getdate()-3,如果它的星期二需要在getdate()-3和getdate()-1之间创建一个范围,如果它的星期三至星期五,那么它需要被创建日期= 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语句中添加一个范围。

穆雷尼克

您不能where像这样动态地重写子句,但是可以通过使用一系列逻辑运算符来获得所需的行为:

SELECT COUNT(Dispute_Reference_no) AS reg_inc
FROM   mytable 
WHERE  reasoncd in ('b2', 'b3') AND
       ((DATENAME(weekday, GETDATE()) = 'monday' AND 
         datecreated = dbo.fn_getdateonly(GETDATE()-3)) OR
        (DATENAME(weekday, GETDATE()) = 'tuesday' AND 
         datecreated BETWEEN dbo.fn_getdateonly(GETDATE()-3) AND 
                             dbo.fn_getdateonly(GETDATE())) OR
        (atecreated = dbo.fn_getdateonly(GETDATE()-1)
       )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章