我正在尝试创建一个where子句,该子句具有2个可以一起使用的语句,然后创建一个单独的语句,如果满足特定条件,则该语句可以自行工作
我已经尝试了CASE语句,AND,OR,但仍然无济于事
WHERE HB.CreatedByDate = @ReportDateN AND HB.Date = @ReportDateN - 1
因此,这段代码是我当前的where子句,它使我得到的结果具有CreatedByDate等于变量@ReportDateN,但是常规日期等于变量@ReportDateN,只是减去了一天。
这本身就是我想要的,但是我想添加更多。
如果要使用一个名为@WeekDay ='Monday'的变量,则要在第二部分中从@ReportDateN中减去3,而不仅仅是1。
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
WHERE HB.CreatedByDate = @ReportDateN
AND HB.DATE = CASE
WHEN @Weekday = 'Monday'
THEN (@ReportDateN - 3)
ELSE (@ReportDateN - 1)
END
这也可以通过组合OR语句
完成WHERE HB.CreatedByDate = @ReportDateN AND
(
@Weekday = 'Monday' AND HB.Date = (@ReportDateN - 3)
)
OR
(
@Weekday != 'Monday' AND HB.Date = (@ReportDateN - 1)
)
仅供参考,请注意以下内容将不起作用:
WHERE CASE @Weekday = 'Monday' THEN .... ELSE ..... END
编辑:下面每个操作的评论:
WHERE HB.CreatedByDate = @ReportDateN AND
(
@Weekday = 'Monday' AND (
HB.Date = (@ReportDateN - 3) OR
HB.Date = (@ReportDateN - 2) OR
HB.Date = (@ReportDateN - 1)
)
)
OR
(
@Weekday != 'Monday' AND HB.Date = (@ReportDateN - 1)
)
答案 1 :(得分:0)
如何?
WHERE
HB.CreatedByDate = @ReportDateN AND
(
@WeekDay = 'Monday' AND HB.Date = @ReportDateN - 3
OR
HB.Date = @ReportDateN - 1
)