Case when

Résolu/Fermé
ghouly Messages postés 2 Date d'inscription lundi 8 février 2016 Statut Membre Dernière intervention 8 février 2016 - 8 févr. 2016 à 18:42
ghouly Messages postés 2 Date d'inscription lundi 8 février 2016 Statut Membre Dernière intervention 8 février 2016 - 8 févr. 2016 à 18:49
Bonjour,

Je suis bloquée sur une requete avec "case when" en sql
je veux afficher plusieurs colonnes selon une conditions 1 sinon d'autres colonnes

D'ailleurs je sais meme pas si c'est faisable ce que je vous demande car j'ai cherché sur le net et j'ai pas trouvé de solution.

je veux faire ca:

case
when (select val from table where ..) = 'toto')
then (select val1 from table where cond1) as col1 ,
(select val2 from table where cond2) as col2,
.....
else //(select val from table where ..) = 'titi')
(select Autreval1 from table where cond1) as col1 ,
(select Autreval2 from table where cond2) as col2,
.....
end

j'ai essayé plusieurs solutions et celle qui me semble plus raisonnable pour factoriser au mieu la requete est :

case (select val from table where condition)
when 'toto'
then (select val1 from table where cond1) as col1 ,
(select val2 from table where cond2) as col2,
.....
else //(= 'titi')
(select Autreval1 from table where cond1) as col1 ,
(select Autreval2 from table where cond2) as col2
end

Merci pour votre aide.
Je continus a chercher et remettrai la solution sinon.

1 réponse

ghouly Messages postés 2 Date d'inscription lundi 8 février 2016 Statut Membre Dernière intervention 8 février 2016
8 févr. 2016 à 18:49
La seule solution que j'ai trouvé pour l'instant c'est de faire :

case when (select val from table where ..) = 'toto')
then (select val1 from table where cond1)
else (select Autreval1 from table where cond1)
end as col1
,case when (select val from table where ..) = 'toto')
then (select val2 from table where cond2)
else (select Autreval2 from table where cond2)
end as col2
....

Et je dois repeter ca sur toutes les colonnes...
Ca marche mais je trouve que c'est trop répétitifs et trés long à l'exécution

qlq1 a t-il une autre idée S.V.P
0