Slt,
C'est l'éternel question avec les Group By...
Dans ton cas :
1 Montesquieu 11/02/06
2 Montesquieu 16/03/06
3 Monstesquieu 02/06/06
1 Izon 24/02/06
2 Izon 01/06/06
1 Gambetta 15/02/06
2 Gambetta 21/03/06
3 Gambetta 10/05/06
C'est simple mais c'est un cas particulier, ton numéro n'a pas de doublons et ton opération ne concerne qu'une seule ligne :
Si tu avais :
1 Montesquieu 11/02/06
3 Montesquieu 16/03/06
3 Monstesquieu 02/06/06
Le Max(Num) est 3 et correspond à deux dates, impossible donc de rajouter la date, Access ne saurait pas laquelle choisir.
Encore plus parlant si tu cherches par exemple le Num Maximum et le Num Minimum.
Select Max(Num),Min(Num),Date from LaTable Group By agence
On voit bien ici qu'il manque quelque chose, quelle Date prend on?
Celle qui correspond au mini ou au maxi?
D'où l'erreur qui dit que la Date ne fait pas partie de la fonction d'agrégat.
(Même s'il n'y a logiquement qu'une date possible dans ce cas particulier)
Donc il faut décomposer :
- 1ère requête nommée RqAgenceMax pour trouver les Num maxi
Select Max(Num) as NumMax,agence from LaTable Group By agence
- 2ème requête avec une jointure pour trouver la date correspondante
1 2 3
| Select RqAgenceMax.NumMax,RqAgenceMax.agence,LaTable.date
from RqAgenceMax Left Join LaTable
on RqAgenceMax.NumMax = LaTable.num and RqAgenceMax.agence = LaTable.agence |
(tu peux aussi mettre la première requête en tant que requête imbriquée dans la deuxième)
(J'ai tapé ça à la volée, ce n'est pas testée...)
Partager