我有一个带有select
语句的存储过程,我正在尝试添加case
语句,如果类型为列[si.TYPE]
为NEW
,则会过滤根据{{1}}是否介于2个值之间,如果列MSRP
为[si.TYPE]
,则会根据USED
是否介于2个值之间进行过滤。
第一个SELLINGPRICE
显示错误:
BETWEEN附近的语法不正确
代码:
BETWEEN
我是否需要进行2次单独选择,然后SELECT ....
FROM ....
WHERE.....
AND CASE si.[type]
WHEN 'new' THEN si.[msrp] BETWEEN @priceMin AND @priceMax
WHEN 'used' THEN si.[sellingprice] BETWEEN @priceMin AND @priceMax
END;
结果才能实现此目的?它在MySQL中工作只需要在SQL Server中找到解决方案
答案 0 :(得分:2)
在SQL Server中,您有布尔表达式,并且您有非布尔表达式。语法决定了它的类型,并且在期望非布尔表达式的地方不能使用布尔表达式。 MySQL允许它们更自由地混合。你必须重写你的语法;一种可能的方式是
SELECT ....
FROM ....
WHERE.....
AND (si.[type] = 'new' AND si.[msrp] BETWEEN @priceMin and @priceMax
OR si.[type] = 'used' AND si.[sellingprice] BETWEEN @priceMin and @priceMax)