问题描述
我将如何过滤此 SQL Server 数据库,以便仅保留绿色记录,也就是每个 Customer ID
字段每年的最后记录日期。
解决方法
如果您想获取行,而不仅仅是日期值,使用 ROW_NUMBER()
是一种选择(您只需要使用适当的 PARTITON BY
和 ORDER BY
子句):>
SELECT *
FROM (
SELECT
CustomerId,[Date],ROW_NUMBER() OVER (PARTITION BY CustomerId,YEAR[Date] ORDER BY [Date] DESC) AS Rn
FROM YourTable
) t
WHERE Rn = 1
,
要检查一年中的最大日期,您可以编写一个查询来获取每年不存在的日期(同一年),如下所示:
argv[1]
,
如果你只有两列,那么你可以使用聚合:
select customer_id,max(date)
from t
group by customer_id,year(date);