我有一些有趣的逻辑,我似乎无法理解。
我们有一个购买表,其中每个购买都链接到客户和日期。我们希望提取每个客户最接近每个月末的购买。
例如,
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执行此操作的简单方法的任何想法吗?
答案 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或更高版本,则可以使用year
和month
函数代替datepart
。
答案 3 :(得分:0)
按月,按年分组 有最大(天)