SQL Server 2016中合并相同number值的T-SQL实现需求
在SQL Server 2016中合并相同number值的解决方案
嘿,针对你要合并SQL Server 2016数据库中相同number值的需求,我给你两种实用的解决方案,你可以根据实际期望输出选择:
方案一:保留每个number的最新记录
如果你的目标是每个number只保留一条最新修改时间的记录,用窗口函数ROW_NUMBER()就能精准实现:
WITH RankedRecords AS ( SELECT ID, number, lastModifiedDate, -- 按number分组,每组内按修改时间倒序排名 ROW_NUMBER() OVER (PARTITION BY number ORDER BY lastModifiedDate DESC) AS rn FROM YourTableName -- 替换成你的实际表名 ) SELECT ID, number, lastModifiedDate FROM RankedRecords WHERE rn = 1; -- 取每组排名第一(最新)的记录
要是你想保留每组最早的记录,只需要把ORDER BY lastModifiedDate DESC改成ASC就行。
方案二:简单去重合并(保留最大修改时间)
如果只是需要对相同number的记录去重,并且用该number对应的最晚修改时间作为结果,用GROUP BY更直接:
SELECT ID, number, MAX(lastModifiedDate) AS lastModifiedDate -- 取每组最晚的修改时间 FROM YourTableName -- 替换成你的实际表名 GROUP BY ID, number; -- 按ID和number分组
从你的示例表来看,所有记录的ID都是124,如果实际场景中ID确实固定,也可以简化成GROUP BY number。
内容的提问来源于stack exchange,提问作者StealthRT
相关产品推荐
相关产品推荐

