基于PART与BOM组合生成SEQ列编号的实现需求
按PART-BOM组合编排SEQ列的实现方案
需求说明
- 同一PART分组内,相同BOM对应的SEQ值保持一致,无重复编号
- 同一PART分组内,不同的PART-BOM组合,SEQ值按顺序依次递增1
- 不同PART之间的SEQ相互独立,各自从1开始计数
样本数据与预期输出
PART BOM SEQ Part1 BOM1 1 Part1 BOM1 1 Part1 BOM2 2 Part1 BOM2 2 Part1 BOM3 3 Part1 BOM4 4 Part2 BOM12 1 Part2 BOM13 2 Part2 BOM14 3 Part2 BOM15 4 Part2 BOM16 5 Part2 BOM17 6 Part3 BOM14 1 Part4 BOM14 1 Part5 BOM14 1 Part6 BOM14 1 Part7 BOM14 1
实现方法(SQL示例)
使用窗口函数DENSE_RANK()可直接满足需求,代码如下:
SELECT PART, BOM, DENSE_RANK() OVER (PARTITION BY PART ORDER BY BOM) AS SEQ FROM your_table;
语句解释
PARTITION BY PART:将数据按PART字段分组,每个PART单独计算SEQ序列ORDER BY BOM:在每个PART分组内,按BOM字段排序,以此确定SEQ的递增顺序DENSE_RANK():为分组内相同的BOM分配相同的序号,且序号连续递增(无跳号),完全匹配需求中的SEQ规则
内容的提问来源于stack exchange,提问作者Sathish Kumar
相关产品推荐
相关产品推荐

