2015-09-25 93 views
0

根據下表,我想根據WhichName列的值動態選擇Name1Name2字段。根據另一列的值選擇動態列?

id Name1 Name2 WhichName SomeValue 
1 Bob  James 1   Blue 
2   Steve 2   Horse 
3 Fred   1   Radish 

結果應該是這樣的:

id Name SomeValue 
1 Bob  Blue 
2 Steve Horse 
3 Fred Radish 

DBMS是Caché的

回答

2

你可以用case做到這一點:

select id, 
     (case when WhichName = 1 then Name1 else Name2 end) as Name, 
     SomeValue 
from <table>; 

注意:如果你喜歡Name1除非,它是NULL,那麼你可以使用COALESCE()

select id, coalesce(Name1, Name2) as Name, SomeValue 
from <table>; 
+0

這有效,但我不能有開放式的'else'。我怎麼能做多個案例? –

+0

另外,謝謝但coalesce選項不適合我的需要。 –

+0

我想出了多個WHEN的東西,但你可能會更新你的答案以反映它。這非常有用。 –

相關問題