Select Max() avec group by

djCourtin Messages postés 14 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 20 juillet 2007 - 20 juil. 2007 à 08:53
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 20 juil. 2007 à 12:31
Rebonjour, je sais pas pourquoi mais mon message d'hier n'a pas été pris en compte et il ne restait que la signature ...
Je réitère donc mon message
Je veux faire une requete du genre :
Select max(date), id from T group by id, pour récupérer l'occurence la plus récente pour chaque id.
jusque là rien de plus simple.
Le pb est que je veux aussi récupérer d'autres champs comme le Libelle et Chemin, sinon ca a pas d'intéret .
Et SQL Server m'emmerde à ce sujet, car si je fais
Select max(date), id, libelle, chemin from T group by id, il plante et me dis qu'il faut que j mette "libelle" et "chemin" dans l'agrégat, soit : Select max(date) , id, chemin, libelle from T group by id, libelle, chemin
mais si je fais le group by la dessus, j'ai plu aucun regroupement du coup car le libelle et le chemin changent pour un meme id ...
du coup je suis coincé, j'espere que vous avez compri mon pb

Si quelqu'un a une idée, elle est la bienvenue
Merci

Seb
A voir également:

2 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
20 juil. 2007 à 12:08
Salut,
c' est normal qu' il t' e***
Sinon pour avoir le libelle et le chemin en une seule ligne
essaies ceci:
Select max(T.date) AS MAXI, id, chemin, libelle from T group by id, libelle, chemin
where T.date=MAXI
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
20 juil. 2007 à 12:31
ça m' étonnerait que ça marche !
essaies plutôt ceci:
SELECT Last(T.date) AS DernierDedate, T.Id, Last(T.Libelle) AS DernierDeLibelle, Last(T.Chemin) AS DernierDeChemin FROM T GROUP BY T.Id;
0
Rejoignez-nous