Soit une table T à deux colonnes (C1,C2) remplie comme suit :
A | 1
A | 3
A | 2
B | 9
B | 8
B | 7
je souhaite trouver la requête qui me renverrai :
A | 3
B | 9
(c'est-à-dire les occurences uniques sur C1 qui ont la plus grande valeur sur C2)
J'ai trouvé une solution, mais qui ne marche que sur mySQL (et pas sur SQL Server !)
J'ai procédé en deux étapes :
étape 1 :
qui me renvoi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT c1,c2 FROM t ORDER BY c2 DESC
B | 9
B | 8
B | 7
A | 3
A | 2
A | 1
étape 2 :
je fait un "GROUP BY" sur le c1 de la table retournée à l'étape 1 pour éliminer les doublons (en tout cas sous mySQL le group by me retourne la première occurence qu'il trouve, donc ça tombe bien)
Ce qui me renvoi dans mySQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT c1,c2 FROM (SELECT c1,c2 FROM t ORDER BY c2 DESC) AS temp GROUP BY c1
A | 3
B | 9
et dans SQL SERVER :
Erreur dans la clause ORDER BY. Impossible d'analyser le texte de la requête.
La clause ORDER BY n'est pas valide dans les vues, les fonctions Inline, les tables et les sous-requêtes, sauf si TOP est étgalement spécifié
Partager