这是我所拥有的一个片段:
select something from myTable
where curentFlag = 'Y'
and
case when @Year2 is not NULL then
AYEAR >= @Year AND AYEAR <= @Year2
else
AYEAR= isnull(@Year ,AYEAR)
end
ADATE = ISNULL(@Date, ADATE)
但这会产生:
'>' 附近的语法不正确。
'ADATE' 附近的语法不正确。
用户应该能够按年份(等于)或年份范围进行搜索。所以我要么只是传递,@YEAR
要么两者都传递@YEAR
and @YEAR2
。假设我的数据集:
DECLARE @y TABLE(AYEAR INT);
INSERT @y VALUES(2008),(2010),(2010);
现在我有这些变量:
DECLARE @YEAR INT, @YEAR2 INT;
- 如果我通过,
@YEAR = 2008
我应该得到 1 个结果。 - 如果我通过,
@YEAR = 2010
我应该得到 2 个结果。 - 如果我通过,
@YEAR = 2008
我@YEAR2 = 2010
应该得到所有 3 个结果。