Probléme Group By "pseudo" hiérarchique
Bonjour,
J’ai une table du style :
IDEnt NOM FONCTION
---------------------------------------
1 ' Dupuis ' Signataire
1 ' Daturt ' Décisionnaire
1 ' Nobel ' (Null)
2 ' Karl ' Décisionnaire
2 ' Titi ' (Null)
3 ' Girofle ' (Null)
3 ' Cardigan ' (Null)
Je veux sortir les personnes les plus "importante" selon une hiérarchie pré établie (Signataire>Décisionnaire>(Null))
Donc le résultat attendu est :
IDEnt NOM FONCTION
---------------------------------------
1 ' Dupuis ' Signataire
2 ' Karl ' Décisionnaire
3 ' Cardigan ' (Null)
Pour le 3éme, la personne sélectionner importe peu.
Je travaille sous Oracle avec des droit extrêmement limiter, je ne peux faire que des SELECT (et ça c'est ch****).
J'ai bien une solution de contournement mais elle est extrêmement moche et ne me satisfait pas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| (
SELECT "IDEnt", max (NOM), max(FONCTION)
FROM table
WHERE FONCTION='Signataire'
GROUP BY "IDEnt"
)
UNION
(
SELECT "IDEnt", max (NOM), max(FONCTION)
FROM table
WHERE FONCTION='Décisionnaire'
AND "IDEnt" not in (SELECT "IDEnt" FROM table WHERE FONCTION='Signataire')
GROUP BY "ID Ent"
)
UNION
(
SELECT "IDEnt", max (NOM), max(FONCTION)
FROM table
WHERE FONCTION='Décisionnaire'
AND "IDEnt" not in (SELECT "IDEnt" FROM table WHERE FONCTION in ('Signataire','Décisionnaire'))
GROUP BY "ID Ent"
); |
Bref c'est moche et lourd, avez-vous une solution plus propre à me proposer?
P.S: Par avance, dsl pour les fautes, je suis une catastrophe en Français