我有一个表单,用户可以在其中提取报告。 在表单中,他们可以选择开始日期和结束日期,或者为这两个值传递 null。如果他们选择 null,则返回 effectivedate < GETDATE() 的所有记录 CASE 语句似乎不喜欢 Between,也不喜欢 '<' 运算符
这是我的脚本
SELECT * FROM tbReport
WHERE
EffectiveDate
CASE
WHEN (@StartDate IS NOT NULL AND @EndDate IS NOT NULL)
THEN BETWEEN (@StartDate AND @EndDate)
ELSE
THEN < GETDATE()
END
最佳答案
您可以在不使用大小写的情况下重写它,例如:
SELECT *
FROM tbReport
WHERE (
@StartDate is not null
and
@EndDate is not null
and
EffectiveDate between @StartDate AND @EndDate
)
or
(
(
@StartDate is null
or
@EndDate is null
)
and
EffectiveDate < getdate()
)
关于sql - 在 SQL CASE where 子句中使用 BETWEEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5416695/