这是我所拥有的一个片段:
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要么两者都传递@YEARand @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 个结果。