2013-02-10 75 views
3

我需要正确的T-SQL语法这一问题: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'其他var_B='10'

+0

考虑更改表格的布局。你的问题表明一个沉重的设计缺陷。你介意展示你的餐桌设计还是解释餐桌所包含的内容? – alzaimar 2013-02-10 21:10:01

回答

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

SQL Fiddle with demo

+0

嗨伊恩,谢谢它工作正常 – user1723982 2013-02-11 10:02:22

2

伊恩大概有可用的最好的答案,但我想我会提供另一个答案的不同(虽然不太灵活)方法的情况下,它可以帮助:你如何使用where子句中的case语句

IF var_c = 'something' BEGIN 
    SELECT * FROM [table] WHERE var_a = '10' 
END 
ELSE BEGIN 
    SELECT * FROM [table] WHERE var_b = '10' 
END 
0

此。

select * from table 
where (case when var_c = 'something' 
     then var_a 
     else 
      var_b 
     end 
    )