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)
我在'> =附近得到错误的语法有人可以帮我解决这个问题吗?
用简单的逻辑替换它:
Where (not (LeaveDateTime > FromDate and EnteringDateTime < ToDate) or
dateadd(day, Threshhold, LeaveDateTime) >= EnteringDateTime
);
Run Code Online (Sandbox Code Playgroud)
如果变量采用NULL值,则逻辑稍微麻烦一些.
您的版本不起作用,因为case它是标量表达式.布尔比较不是标量表达式,因此它不能是a返回的值then.