Imbriquer un SELECT avec un GROUP BY
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 :
Code:
SELECT c1,c2 FROM t ORDER BY c2 DESC
qui me renvoi :
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)
Code:
SELECT c1,c2 FROM (SELECT c1,c2 FROM t ORDER BY c2 DESC) AS temp GROUP BY c1
Ce qui me renvoi dans mySQL :
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é