日期:2014-05-18  浏览次数:20698 次

查询的where条件能否用case when来使用哪个列
SQL code

declare @P int
set @P=1

SELECT A列
,B列
,C列
,D列
FROM TB
WHERE (CASE WHEN @P=1 THEN A列>10 ELSE B列>10 END)



上面的写法是错误的,我是想实现@P=1时执行
SELECT * FROM TB WHERE A列>10

否则执行
SELECT * FROM TB WHERE B列>10

不知道如何实现

------解决方案--------------------
不可以用case when 
SELECT * FROM TB WHERE (A列>10 and @P=1) or (B列>10 and @P<>1)