我有很复杂这样的语句:SQL情况/ if语句
select x.ColA as ColA
, case when x.optA = 'AB' or x.optA = 'FG' or x.optA = 'LM' or x.optA = 'QR' then X.ColB/100 else X.ColB/900 End as ColB
, case when x.optA = 'AB' or x.optA = 'FG' or x.optA = 'LM' or x.optA = 'QR' then X.ColC/100 else X.ColC/900 End as ColC
, case when x.optA = 'AB' or x.optA = 'FG' or x.optA = 'LM' or x.optA = 'QR' then X.ColD/100 else X.ColD/900 End as ColD
, case when x.optA = 'AB' or x.optA = 'FG' or x.optA = 'LM' or x.optA = 'QR' then X.ColE/100 else X.ColE/900 End as ColE
From TableA
我想简化成这样的事情这一点,是有可能:
select x.ColA as ColA
case when x.optA = 'AB' or x.optA = 'FG' or x.optA = 'LM' or x.optA = 'QR' then
, X.ColB/100 as ColB
, X.ColC/100 as ColC
, X.ColD/100 as ColD
, X.ColE/100 as ColE
Else
, X.ColB/900 as ColB
, X.ColC/900 as ColC
, X.ColD/900 as ColD
, X.ColE/900 as ColE
End
From TableA
请使用代码标记... – JNK 2010-07-30 19:25:51
这不是一个答案,你问的问题,但考虑使用IN语句:'情况下x.optA IN(“AB”,“FG”,'LM ”,‘QR’)' – 2010-07-30 19:27:45
@Matthew琼斯 - 不会空值打破,不过,它运行慢扫描我想太多。 EXISTS可能会更快。 – JNK 2010-07-30 19:30:02