2011-04-02 6 views
1

J'essaie de sélectionner une valeur dans un champ AS "initial_cost" mais la valeur est dans une colonne différente en fonction de la valeur du champ channel_id, si channel_id est 1 alors c'est dans field_id_4, si c'est 2 alors c'est dans field_id_10.Champ SQL SELECT dépendant d'un autre champ de la ligne

J'ai essayé différentes mutations du dessous, mais en vain,

SELECT (CASE WHEN channel_id = 1 
     THEN field_id_4 
     FROM exp_channel_data 

     WHEN channel_id = 2 
     THEN field_id_10 FROM exp_channel_data 
     END) as initial_cost 

Quelqu'un peut-il aider?

Répondre

6

Comme ça?

select title 
     ,entry_date 
     ,case when channel_id = 1 then field_id_4 
      when channel_id = 2 then field_id_10 
     end as initial_cost 
    from exp_channel_data; 
+0

Merci, cela semble bon, mais je ne peux pas obtenir de travailler avec d'autres champs SELECT par exemple: titre SELECT, entry_date , (SELECT CASE WHEN ID_canal = 1 PUIS ID_table_4 WHEN ID_canal = 2 PUIS ID_FIDEL FIN en tant que coût d'origine FROM exp_channel _data) FROM exp_channel_data – James

+0

@James, j'ai mis à jour la requête pour inclure d'autres champs afin que vous puissiez voir à quoi ressemblerait la syntaxe. – Ronnis

+0

Super, merci Ronnis! – James

1
SELECT CASE WHEN channel_id = 1 THEN field_id_4 
    WHEN channel_id = 2 THEN field_id_10 END as intialcost 
    FROM exp_channel_data 
2

ou en utilisant case <column> when <value> au lieu de case when <condition>:

select case channel_id 
     when 1 then field_id_4 
     when 2 then field_id_10 
     end as initial_cost 
from exp_channel_data 
Questions connexes