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 : 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"
);
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