Select Max() avec group by

Signaler
Messages postés
14
Date d'inscription
mardi 17 juin 2003
Statut
Membre
Dernière intervention
20 juillet 2007
-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
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

2 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
ç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;