条件where where子句SQL Server 2012

Wid*_*der 2 sql t-sql sql-server-2012

我已经四处寻找,但没有找到与我想要实现的相似的情况.我只想在条件为真时执行where子句表达式,否则我想忽略与它不匹配的数据.

Where (
        case when LeaveDateTime > FromDate and EnteringDateTime < ToDate then
        (dateadd(d, Threshhold, LeaveDateTime) >= EnteringDateTime
        end
);
Run Code Online (Sandbox Code Playgroud)

我在'> =附近得到错误的语法有人可以帮我解决这个问题吗?

Gor*_*off 5

用简单的逻辑替换它:

Where (not (LeaveDateTime > FromDate and EnteringDateTime < ToDate) or
       dateadd(day, Threshhold, LeaveDateTime) >= EnteringDateTime
      );
Run Code Online (Sandbox Code Playgroud)

如果变量采用NULL值,则逻辑稍微麻烦一些.

您的版本不起作用,因为case它是标量表达式.布尔比较不是标量表达式,因此它不能是a返回的值then.