【发布时间】:2019-01-10 05:45:30
【问题描述】:
在我的过程中,我有一个 where 语句,可以显示 datecomplete 位于所选参数内的所有记录,或者如果未设置参数,则只显示所有记录,无论它们是否在 datecomplete 列中有任何数据。
我已尝试使用以下代码实现此目的:
WHERE (jobsToCheck.DateCompleted =
CASE WHEN @StartDateCompleted IS NULL THEN jobsToCheck.DateCompleted IS NULL
ELSE (jobsToCheck.DateCompleted BETWEEN @StartDateCompleted AND
@EndDateCompleted OR @StartDateCompleted IS NULL) END)
但是得到错误'关键字'IS'附近的语法不正确。'有没有更好的方法来做到这一点?
我得到的最接近预期结果的是使用以下内容:
(jobsToCheck.DateCompleted BETWEEN @StartDateCompleted AND @EndDateCompleted
OR @StartDateCompleted IS NULL) OR jobsToCheck.DateCompleted IS NULL
但是,当我设置数据 StartDate 和 EndDate 参数时,这会显示所有包含或不包含完整日期的记录,但我只想要在开始日期和结束日期之间或者我没有设置开始日期或结束日期的记录为所有没有完成日期的记录添加日期。
【问题讨论】:
-
样本数据和期望的结果真的很有帮助。
-
虽然this answer 适用于
join条件,但它与where的工作方式相同。