2009-07-21 207 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