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

SQL Server 2019中如何为每个ID下的GroupID分配连续分组编号

解决方案

要实现每个ID下按GroupID分配连续的Group Number,使用DENSE_RANK()函数结合正确的分区与排序逻辑即可,无需使用运行值。

完整SQL代码

SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY ID, GROUPID ORDER BY line) AS RankByID_GroupID,
    DENSE_RANK() OVER (PARTITION BY ID ORDER BY MIN(line) OVER (PARTITION BY ID, GroupID)) AS [Group Number]
FROM 
    #t
ORDER BY ID, line;

代码说明

  • RankByID_GroupID:保留你原有的逻辑,按ID和GroupID分区,对同一组内的行按line生成连续编号。
  • Group Number:
    1. 先通过MIN(line) OVER (PARTITION BY ID, GroupID)获取每个ID下各GroupID对应的最小行号,以此确定该GroupID在当前ID中的出现顺序。
    2. 再用DENSE_RANK()按ID分区,基于上述最小行号排序,生成连续的组编号——同一个GroupID的所有行将获得相同编号,不同GroupID按出现顺序依次递增。

执行结果

IDRisk_NamelineGroupIDRankByID_GroupIDGroup Number
1234American 111011
1234Asian 2122012
1234Asian 2432022
1234Asian 2842032
1234Europe 30053013
1234Europe 38863023
88888American 211011
88888American 421021
88888Europe 3333012

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:03:41