SQL最新日期

时间:2009-07-21 15:01:26

标签: sql sql-server

我有一些有趣的逻辑,我似乎无法理解。

我们有一个购买表,其中每个购买都链接到客户和日期。我们希望提取每个客户最接近每个月末的购买。

例如,

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执行此操作的简单方法的任何想法吗?

4 个答案:

答案 0 :(得分:12)

这个怎么样?

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

按客户ID和日期的年份和日期组件分组,并使用max aggregate从每个组中获取最新日期:

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

注意:如果您使用的是SQL Server 2005或更高版本,则可以使用yearmonth函数代替datepart

答案 3 :(得分:0)

按月,按年分组 有最大(天)