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

SQL Server 2008查询重复名称最新连续出现的最早日期

SQL Server 2008环境下获取指定名称最新连续序列最早日期的解决方案

核心思路

采用经典的「日期孤岛分组」逻辑实现,完全兼容SQL Server 2008,无需使用LEAD/LAG函数:

  • 连续日期的记录按升序排序后,「日期减去对应行号的天数」得到的基准值完全相同,以此作为分组标识将连续出现的记录归为同一组
  • 筛选出结束日期最大的分组(即最新的连续序列),取该组内的最小日期即可得到结果

完整查询代码

SELECT MIN(Date) AS 最新连续序列最早日期
FROM (
    SELECT 
        Date,
        -- 生成连续序列分组标识
        DATEADD(DAY, -ROW_NUMBER() OVER (ORDER BY Date ASC), Date) AS GroupID
    FROM myTable
    WHERE Name = 'X'
) AS GroupedRecords
-- 匹配最新连续序列的分组标识
WHERE GroupID = (
    SELECT TOP 1 GroupID
    FROM (
        SELECT 
            DATEADD(DAY, -ROW_NUMBER() OVER (ORDER BY Date ASC), Date) AS GroupID
        FROM myTable
        WHERE Name = 'X'
    ) AS AllGroups
    GROUP BY GroupID
    -- 按分组的最大日期倒序,取第一个就是最新的连续序列
    ORDER BY MAX(Date) DESC
)

逻辑验证(以你给出的示例数据为例)

示例中X的四条记录按日期排序后计算分组标识:

  • 行号1对应2021-01-22,分组标识为2021-01-21
  • 行号2对应2021-01-28,分组标识为2021-01-26
  • 行号3对应2021-01-29,分组标识为2021-01-26
  • 行号4对应2021-01-30,分组标识为2021-01-26

分组后最大结束日期对应的分组标识为2021-01-26,取该组最小日期得到2021-01-28,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:15:06