Bonjour à tous,

J'ai une requête assez complexe (ci-après nommée ma_requete_qui_fait_plein_de_trucs qui rapatrie tout un tas de données et dont je souhaiterais ne récupérer que les lignes qui ont la valeur maximale d'une certaine colonne. C'est-à-dire, j'ai des données de ce genre là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT Valeur, Colonne1, Colonne2, ..., ColonneN
FROM ma_requete_qui_fait_plein_de_trucs
... et je voudrais ne garder que les lignes qui ont dans la colonne Valeur la valeur maximale de toute la colonne.

Une façon de faire ça serait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT Valeur, Colonne1, Colonne2, ..., ColonneN
FROM ma_requete_qui_fait_plein_de_trucs
WHERE Valeur = (SELECT MAX(Valeur) FROM ma_requete_qui_fait_plein_de_trucs)
Mais cette méthode implique d'exécuter deux fois ma_requete_qui_fait_plein_de_trucs, ce qui n'est ni très économe, ni très ergonomique dans le code.

N'ayant que des droits très limités sur la base de données, je ne peux pas créer de vue ou ce genre de chose (ou plus exactement je peux en créer, mais on nous l'a interdit... (fichus décideurs )).
J'ai du mal à croire que cette sélection de ligne ne soit pas possible par le biais d'une astuce SQL, mais je n'arrive pas à trouver comment faire.

La colonne Valeur contient des entiers positifs. La base de données est gérée par Oracle (je ne saurais pas dire quelle version).

Merci par avance de votre aide !

EDIT : plus d'explications du problème dans mon message suivant