2015-09-25 3 views
0

Учитывая следующую таблицу, я хотел бы динамически выбрать поле Name1 или Name2, основанное на значении столбца WhichName.Выберите динамический столбец, основанный на значении другого столбца?

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 

СУБД 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

Я вычислил многократную КОГДА, но вы можете обновить свой ответ, чтобы отразить его в любом случае. Это очень полезно. –

Смежные вопросы