按每年的最新日期过滤 SQL Server 记录

问题描述

我将如何过滤此 SQL Server 数据库,以便仅保留绿色记录,也就是每个 Customer ID 字段每年的最后记录日期。

SQL database

解决方法

如果您想获取行,而不仅仅是日期值,使用 ROW_NUMBER() 是一种选择(您只需要使用适当的 PARTITON BYORDER 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);

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...