You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server如何按指定列去重并保留每个fid的最新日期单条记录

SQL Server 按fid分组取最新日期单条记录的实现方案

实现逻辑

使用SQL Server原生支持的窗口函数ROW_NUMBER()可以简单高效实现需求,不需要额外关联聚合结果,也不会出现最新日期对应多条记录导致重复的问题。

示例代码

SELECT fid, name, date
FROM (
    SELECT 
        fid, 
        name, 
        date,
        -- 按fid分组,组内按日期倒序排序生成序号
        ROW_NUMBER() OVER(PARTITION BY fid ORDER BY date DESC) AS rn
    FROM 你的表名 -- 替换为实际业务表名
) t
WHERE rn = 1

代码说明

  • PARTITION BY fid:将全表数据按fid字段拆分为独立分组,每个fid对应一个分组
  • ORDER BY date DESC:每个分组内部按date字段从新到旧排序,最新的日期排在分组最前面
  • 同一fid下如果有多个相同最新日期的记录,ROW_NUMBER()会自动给这些记录分配连续序号,取rn=1就可以实现「任意保留1条」的要求

备选方案(不使用窗口函数)

如果特殊场景不能使用窗口函数,也可以用关联子查询实现:

SELECT t1.*
FROM 你的表名 t1
WHERE t1.name = (
    SELECT TOP 1 name
    FROM 你的表名 t2
    WHERE t2.fid = t1.fid
    ORDER BY t2.date DESC
)

内容的提问来源于stack exchange,提问作者omega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:48:03