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

如何为相同business_code生成统一自增列值?SQL求助

解决SQL中为相同business_code分配唯一递增数值的问题

问题说明

需求:新创建的列中,相同business_code对应相同的自增数值,不同business_code对应唯一的递增编号。

尝试的SQL语句:

select *
    , rank() over (partition by business_code order by ID)
from table

当前问题:使用上述语句后,每个business_code分组的新列初始值均为1,不符合预期。

当前输出示例:

IdbusinesscodeNewColumn
1eng1
2mkr1
3eng2
4fin1
5mkr2

预期输出:每个不同的business_code对应唯一递增数值,相同business_code的NewColumn值一致:

IdbusinesscodeNewColumn
1eng1
2mkr2
3eng1
4fin3
5mkr2

解决方案

你需要的是对business_code进行全局分组编号,而非分组内的排名。可以使用DENSE_RANK()函数(无重复business_code时用RANK()效果一致),去掉PARTITION BY子句,改为按business_code排序:

select *
    , dense_rank() over (order by business_code) as NewColumn
from table

补充说明

  • DENSE_RANK()会为每个不同的business_code分配唯一的递增整数,相同的business_code会得到相同编号,且编号连续(即使存在重复business_code也不会跳过数字)。
  • 若你的business_code无重复值,用RANK()也能得到预期结果,但DENSE_RANK()在有重复场景下更贴合“连续递增”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:21:27