【发布时间】:2014-04-18 16:10:06
【问题描述】:
我正在尝试从表中选择 *,但选择范围取决于输入的月份。
我在 WHERE 子句中使用 CASE 来确定月份值,并选择正确的 Where 语句。
但是我得到一个错误;
关键字“AND”附近的语法不正确。
这是我的 SQL 语句:
select * from MyTable
where Station = 'MyStation'
and case when @Month > 9 then
(CONVERT(DATE, CommittedDate, 103) BETWEEN
CAST(@Year as varchar(10))+ '1001' AND CAST(@Year as varchar(10))+ REPLACE(STR(@Month, 2), ' ', '0')+'25')
else
(CONVERT(DATE, CommittedDate, 103) BETWEEN
CAST(@Year as varchar(10))+ '1001' AND CAST(@Year as varchar(10))+ REPLACE(STR(@Month, 2), ' ', '0')+'25')
我尝试将CASE 放在BETWEEN 之后,只过滤两者之间的值,但这也不起作用。
【问题讨论】:
标签: sql-server sql-server-2008 tsql