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 :
Bref c'est moche et lourd, avez-vous une solution plus propre à me proposer?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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" );
P.S: Par avance, dsl pour les fautes, je suis une catastrophe en Français
Partager