2010-02-08 6 views
0

Disons que j'ai une table avec ces champsMSAccess - requête de conception pour le groupe par date anniversaire

LeaveDate 
LeaveType 

Je veux écrire une requête que les groupes par une date de annivesary.

Par exemple dire le 8 février

Donc, pour cette année les dates après le 8 février serait « 2010 » et les dates avant le 8 février montrerait « 2009 ».

Je souhaite que cela se produise pour toutes les années.

Comprendre?

Malcolm

+0

On dirait que vous voudriez faire un datediff à partir de la date du premier anniversaire, puis prendre le plancher du résultat en années, puis groupe par là. Jamais utilisé Access pour le travail de base de données non-trivial, cependant, ne pouvait donc pas vous conseiller * comment * le faire. –

+0

Oh, aussi, si vous voulez une réponse utile, il serait préférable de poster la définition de la ou des tables pertinentes et un exemple de ce que vous attendez de la sortie de la requête. –

+0

Ah, même nom pour la fonction que partout ailleurs: DateDiff() http://office.microsoft.com/fr-fr/access/ha012288111033.aspx –

Répondre

0

Vous pouvez créer une requête avec une colonne calculée pour la date anniversaire, puis le groupe par cette colonne.

1

Voici comment je l'ai fait

SELECT Year([tblFoo]![Leave_date])-IIf(DateDiff("d",[tblFoo]![Leave_date],DateSerial(Year([tblFoo]![Leave_date]),2,8))>0,1,0) AS Year_group, Count(tblFoo.ID) AS CountOfID 

FROM tblFoo 

GROUP BY Year([tblFoo]![Leave_date])-IIf(DateDiff("d",[tblFoo]![Leave_date],DateSerial(Year([tblFoo]![Leave_date]),2,8))>0,1,0); 

Ce qui compte le nombre d'enregistrements pour chaque « année ». Nous utilisons quelque chose de similaire pour travailler les années d'anniversaire qui changent d'une personne à l'autre. Dans ce cas, l'utilisation peut simplement remplacer les 2 et 8 fixes avec le mois et le jour où ils sont nés