2
我在我的表中的日期列。我想所有的记录,其中相比于今天的日期的月数大于10,但我想申请这个条件只有当我的声明参数的值设为@parameter='Apply'
。否则,我不想执行日期标准。使用IF条件在WHERE子句
我的结果应该是第一行,第二行和第三行,当@parameter ='Apply'
,否则如果@parameter
是别的东西,那么所有四行都会返回。
GetDate Val
------------ -----
1/12/2013 A
1/12/2012 B
1/12/2014 C
1/12/2015 D
下面的工作如预期,但有很多冗余代码。有没有办法将if条件放在where子句中?
DECLARE @parameter VARCHAR(10)='Apply'
if(@parameter='Apply')
begin
select * from testTable where
DATEDIFF(MONTH,GetDate,GETDATE()) >10
end
else
begin
select * from testTable
end
相关:捉住所有查询(http://sqlinthewild.co.za/index.php/2009/03/19/catch - 所有查询/) –