2009-07-21 5 views
2

J'ai une logique intéressante que je n'arrive pas à comprendre.Dernière date SQL

Nous avons une table d'achat, où chaque achat est lié à un client et une date. Nous voulons sortir l'achat que chaque client fait le plus proche de la fin de chaque mois.

Par exemple,

CustomerID | Date 
1   | 01/20/2009 
2   | 01/26/2009 
1   | 01/21/2009 
1   | 02/02/2009 

devrait retourner ....

CustomerID | Date 
2   | 01/26/2009 
1   | 01/21/2009 
1   | 02/02/2009 

Toutes les idées pour un moyen simple de le faire en utilisant SQL Server?

Répondre

12

Que pensez-vous de cela?

SELECT CustomerID, MAX(Date) 
FROM Purchase 
GROUP BY CustomerID, YEAR(Date), MONTH(Date) 
+0

+1 pour me battre :) :) – AdaTheDev

+0

merci pour les réponses rapides! – tinkertime

0

Groupe par mois, année ayant max (jour)

1
SELECT CustomerID, MAX(Date) 
FROM Purchases 
GROUP BY CustomerID, MONTH(Date), YEAR(Date) 
1

Group par le numéro de client et les composants de l'année et la date de la date, et d'utiliser l'agrégat max pour obtenir la dernière date de de chaque groupe:

select CustomerId, max(Date) 
from Purchase 
group by CustomerId, datepart(year, Date), datepart(month, Date) 

Remarque: Si vous utilisez SQL Server 2005 ou version ultérieure, vous pouvez utiliser les fonctions au lieu de year et monthdatepart.

Questions connexes