在Where子句中使用if语句

Ada*_*McC 2 t-sql sql-server-2005

是否可以在where子句中使用if staement?

WHERE (underwritername = 'underwriter') and (case when inceptiondate is null then (requestdate >= convert(datetime,'01/10/2009',103)) else (Inceptiondate >= convert(datetime,'01/10/2009',103)) ) and (requestdate <= convert(datetime,'31/10/2010',103))

基本上如果一列为null,我需要使用替代列进行选择.

非常感谢,

亚当

Lam*_*mak 6

您可以使用CASE稍有不同的语句来做到这一点:

WHERE (underwritername = 'underwriter') 
and (case when inceptiondate is null 
     AND requestdate >= convert(datetime,'01/10/2009',103) THEN 1 
     WHEN inceptiondate IS NOT NULL 
     AND Inceptiondate >= convert(datetime,'01/10/2009',103) THEN 1 ELSE 0 END = 1) 
and (requestdate <= convert(datetime,'31/10/2010',103))
Run Code Online (Sandbox Code Playgroud)