where 子句中的多个语句
Multiple statements in a where clause
我正在尝试创建一个 where 子句,其中包含 2 个协同工作的语句,然后是一个单独的语句,如果它满足特定条件则可以单独工作
我已经尝试了 CASE 语句、AND、OR,但仍然没有任何效果
WHERE HB.CreatedByDate = @ReportDateN AND HB.Date = @ReportDateN - 1
所以这段代码是我当前的 where 子句,它得到的结果是 CreatedByDate 等于变量 @ReportDateN,但常规日期也等于变量 @ReportDateN,只是减去一天。
这本身就是我想要它做的,但我想添加更多。
我想这样做,如果一个名为@WeekDay = 'Monday' 的变量,那么在第二部分从@ReportDateN 中减去 3 而不是仅减去 1。
任何帮助将不胜感激,谢谢!
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)
)
这个怎么样:
WHERE
HB.CreatedByDate = @ReportDateN AND
(
@WeekDay = 'Monday' AND HB.Date = @ReportDateN - 3
OR
HB.Date = @ReportDateN - 1
)
我正在尝试创建一个 where 子句,其中包含 2 个协同工作的语句,然后是一个单独的语句,如果它满足特定条件则可以单独工作
我已经尝试了 CASE 语句、AND、OR,但仍然没有任何效果
WHERE HB.CreatedByDate = @ReportDateN AND HB.Date = @ReportDateN - 1
所以这段代码是我当前的 where 子句,它得到的结果是 CreatedByDate 等于变量 @ReportDateN,但常规日期也等于变量 @ReportDateN,只是减去一天。
这本身就是我想要它做的,但我想添加更多。
我想这样做,如果一个名为@WeekDay = 'Monday' 的变量,那么在第二部分从@ReportDateN 中减去 3 而不是仅减去 1。
任何帮助将不胜感激,谢谢!
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)
)
这个怎么样:
WHERE
HB.CreatedByDate = @ReportDateN AND
(
@WeekDay = 'Monday' AND HB.Date = @ReportDateN - 3
OR
HB.Date = @ReportDateN - 1
)