Spécification d'une colonne en fonction d'un resultat
Bonjour à tous,
J'utilise fréquement la requete simplifiée ci dessous :
Select client,
Max( CASE WHEN ROROLE=1 THEN 'Emetteur a;' ELSE NULL END)||
Max( CASE WHEN ROROLE=2 THEN ''Emetteur b;' ELSE NULL END)|| ' ' A
From matable
Cette requete me permet d'extraire le nom des clients d'une table + de savoir si un client est "Emetteur a" et/ou "Emetteur b" ou rien du tout en alignant le résultat sur 2 colonne
Sur Excell, l'extraction s'affiche de la manière suivante (3 colonnes différentes):
Colonne 1 Colonne 2 Colonne 3
Client1 Emetteur a Emetteur b
Client2 Emetteur b Emetteur a
Client3 Emetteur b (cellule vide)
"Emetteur a" ou "emetteur b" s'affichent indifféremment en colonne 2 ou 3 (je suppose que cela dépend de qui a ou b a été renseigné en 1er en base)
Existe t il un moyen pour forcer la mise en forme de l'extraction. A savoir :
- Si un client est ROROLE=1 alors "Emetteur a" s'affiche dans la colonne 2
- Si un client n'est pas ROROLE=1 alors la colonne 2 est vide
- Si un client est ROROLE=2 alors "Emetteur b" s'affiche dans la colonne 3
- Si un client n'est pas ROROLE=2 alors la colonne 3 est vide
MERCI d'avance pour votre retour
Spécification d'une colonne en fonction d'un résultat
Merci pour vos 2 réponses.
Voici la requete que j'ai faite suite à vos 2 réponses (rotiers correspond à clients du message précédent) :
Code:
1 2 3 4 5 6
|
select rotiers,rorole,
max (case rorole when 1 then 'Emeteur a' end) as colonne2
max (case rorole when 2 then Emeteur b' end) as colonne3
from x.rolestiers
Group by rotiers; |
Voici le message que me donne l'extraction :
Citation:
ORA-01756: quoted string not properly terminated
Spécification d'une colonne en fonction d'un resultat
Bonjour à tous,
1 / Je souhaiterai rajouter une valeur qui dépend d'une condition dans une 4ème colonne :
Si 'emetteur a' apparait en colonne 2 alors la colonne 4 contient la valeur 'TP'.
Sinon 'TS'
2 / Je souhaite ensuite filtrer le résultat de la requête : ne garder que les lignes avec 'TP' en colonne 4.
Ci dessous mon code pour la partie 1 :
Code:
1 2 3 4 5 6
| SELECT rotiers,
max(case rorole when 1 then 'Emetteur a' end) AS colonne2,
max(case rorole when 2 then 'Emetteur b' end) AS colonne3,
min(case when rorole=1 then 'TP' else 'TS' end) as colonne4
FROM x.rolestiers
GROUP BY rotiers; |
Je bute sur la partie 2.
Merci d'avance pour votre aide.