我的表格中有一个日期列。我想获得与今天的日期相比的月数大于10的所有记录,但我想仅在我声明的参数具有值@parameter='Apply'
时应用此条件。否则,我不想强制执行日期标准。
我的结果应该是@parameter ='Apply'
时的第1行,第2行和第3行,否则如果@parameter
是其他行,那么将返回所有4行。
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
答案 0 :(得分:3)
这将做同样的事情:
select *
from testTable
where (DATEDIFF(MONTH,GetDate,GETDATE()) >10 AND @parameter='Apply')
OR @parameter <> 'Apply'