4

对于这个问题,我需要正确的 tsql 语法:

Select * from table where var_A='10'
select * from table where var_B='10'

何时使用 var_A 或 var_B 取决于 var_C 的值

所以当var_c='something'使用var_A='10'elsevar_B='10'

4

3 回答 3

5
select *
from [table]
where case when var_c = 'something' then var_a else var_b end = '10'

SQL Fiddle 与演示

于 2013-02-10T19:07:46.633 回答
2

伊恩可能有最好的答案,但我想我会为不同的(虽然不太灵活)方法提供另一个答案,以防万一:

IF var_c = 'something' BEGIN
    SELECT * FROM [table] WHERE var_a = '10'
END
ELSE BEGIN
    SELECT * FROM [table] WHERE var_b = '10'
END
于 2013-02-11T03:10:00.077 回答
0

这就是你在 where 子句中使用 case 语句的方式。

select * from table
where ( case when var_c = 'something' 
        then var_a
        else 
            var_b
        end
      )
于 2013-02-11T04:18:10.567 回答