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

SQL Server中为相同Values值生成分组编号的技术求助

解决SQL Server中按相同值生成分组编号的问题

你需要为相同Values值的行生成统一的分组编号,之前使用DENSE_RANK()时错误地按SortOrder排序,导致每个行得到独立的连续编号,而非按值分组的编号。以下是两种可行的解决方案:

方法一:按值首次出现的顺序生成分组号(通用方案)

这种方法不受Values的字符排序影响,严格按照每个值第一次出现的SortOrder顺序分配分组编号,适配所有场景:

SELECT
    [Values],
    SortOrder,
    DENSE_RANK() OVER (ORDER BY MIN(SortOrder) OVER (PARTITION BY [Values])) AS [Group]
FROM your_table
WHERE [Values] IS NOT NULL
ORDER BY SortOrder;

方法二:按值的字符顺序生成分组号(适用于值顺序与出现顺序一致的场景)

如果你的Values字符排序顺序和它们在结果集中出现的顺序完全一致,可以直接简化为:

SELECT
    [Values],
    SortOrder,
    DENSE_RANK() OVER (ORDER BY [Values]) AS [Group]
FROM your_table
WHERE [Values] IS NOT NULL
ORDER BY SortOrder;

核心逻辑说明

  • PARTITION BY [Values] 将相同Values的行划分为同一组,MIN(SortOrder)取每组中最小的SortOrder,代表该值首次出现的位置。
  • 外层的DENSE_RANK()按这个首次出现的位置排序,就能为同一Values的行分配相同的连续分组编号,不会出现跳号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:31:05