2009-07-21 85 views
2

我有一个有趣的逻辑,我似乎无法得到我的头。SQL最新日期

我们有一个购买表,其中每个购买链接到一个客户和一个日期。我们想抽出每个客户最接近每个月末的采购。

例如,

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

应该返回....

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

一个简单的方法来做到这一点使用SQL Server的任何想法?

回答

12

这个怎么样?

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

+1打我:) – AdaTheDev 2009-07-21 15:08:40

0

集团按月,年 有最大(日)

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

组由客户ID和日期的年份和日期分量,并使用MAX聚合以获得最新的日期从各组:

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

注:如果您稍后使用SQL Server 2005或,你可以使用yearmonth功能,而不是datepart