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

如何使用TSQL窗口函数对连续相同值的行分组并生成连续编号

TSQL连续相同值分组编号实现方案

你需要实现的是SQL领域典型的连续相同值(孤岛)分组场景,以下是可直接运行的TSQL实现代码:

WITH CTE AS (
    SELECT 
        Col1,
        Col2,
        CASE WHEN LAG(Col2) OVER(ORDER BY Col1) = Col2 THEN 0 ELSE 1 END AS GroupFlag
    FROM (
        SELECT 1 Col1, 0 Col2
        UNION SELECT 2,0
        UNION SELECT 3,1
        UNION SELECT 4,1
        UNION SELECT 5,0
        UNION SELECT 6,1
        UNION SELECT 7,1
        UNION SELECT 8,1
        UNION SELECT 9,0
        UNION SELECT 10,1
    ) a
)
SELECT 
    Col1,
    Col2,
    SUM(GroupFlag) OVER(ORDER BY Col1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS NewColumn
FROM CTE
ORDER BY Col1

实现逻辑

  1. 用LAG窗口函数获取按Col1排序后上一行的Col2值,和当前行Col2对比:值相同则标记为0,值不同(包括第一行无上一行的场景)则标记为1,代表新分组的起点
  2. 用SUM窗口函数对标记值做累计求和,求和范围是从结果集第一行到当前行,累计结果就是连续递增的分组编号,和你要求的输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:18:03