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

请求:按指定字段分组为SQL重复记录添加序号

嗨Mary,我来帮你搞定这个重复记录分组编号的问题~

解决重复记录分组编号需求

需求说明

你需要根据sCustLastName、sCustFirstName、sDealerNumber、sProductCode和sVIN这5个字段对重复记录分组,为每组内的记录依次生成连续序号(也就是你要的Count列)。

解决方案:使用SQL窗口函数ROW_NUMBER()

在支持窗口函数的SQL数据库(比如SQL Server、MySQL 8.0+、PostgreSQL等)中,ROW_NUMBER()可以完美实现这个需求:它会按指定字段分组,再在每组内生成连续的序号。

核心查询代码

SELECT 
    ROW_NUMBER() OVER (
        PARTITION BY sCustLastName, sCustFirstName, sDealerNumber, sProductCode, sVIN
        ORDER BY sVIN -- 同组记录都是重复的,这里可以替换成任意字段,不影响编号顺序
    ) AS Count,
    sCustLastName,
    sCustFirstName,
    sDealerNumber,
    sProductCode,
    sVIN
FROM Contract_Header

验证步骤(含测试数据)

1. 创建测试表

Create Table Contract_Header (
 sCustLastName varchar(20),
 sCustFirstName varchar(20),
 sDealerNumber nvarchar(20),
 sProductCode varchar(3),
 sVIN nvarchar(20)
)

2. 插入测试数据

Insert into Contract_Header (sCustLastName,sCustFirstName,sDealerNumber,sProductCode,sVIN) Values ('Ln1','Fn1','TWS00967','GAP','1HGCR2F5XHA151050')
Insert into Contract_Header (sCustLastName,sCustFirstName,sDealerNumber,sProductCode,sVIN) Values ('Ln1','Fn1','TWS00967','GAP','1HGCR2F5XHA151050')
Insert into Contract_Header (sCustLastName,sCustFirstName,sDealerNumber,sProductCode,sVIN) Values ('Ln1','Fn1','TWS00967','GAP','1HGCR2F5XHA151050')
Insert into Contract_Header (sCustLastName,sCustFirstName,sDealerNumber,sProductCode,sVIN) Values ('Ln2','Fn2','TWS00968','GAP','WVWEV7AJXAW197040')
Insert into Contract_Header (sCustLastName,sCustFirstName,sDealerNumber,sProductCode,sVIN) Values ('Ln2','Fn2','TWS00968','GAP','WVWEV7AJXAW197040')
Insert into Contract_Header (sCustLastName,sCustFirstName,sDealerNumber,sProductCode,sVIN) Values ('Ln3','Fn3','TWS00967','GAP','2HGFC2F56GH536572')
Insert into Contract_Header (sCustLastName,sCustFirstName,sDealerNumber,sProductCode,sVIN) Values ('Ln3','Fn3','TWS00967','GAP','2HGFC2F56GH536572')
Insert into Contract_Header (sCustLastName,sCustFirstName,sDealerNumber,sProductCode,sVIN) Values ('Ln4','Fn4','TWS00967','PPM','19XFC2F76JE003513')
Insert into Contract_Header (sCustLastName,sCustFirstName,sDealerNumber,sProductCode,sVIN) Values ('Ln4','Fn4','TWS00967','PPM','19XFC2F76JE003513')
Insert into Contract_Header (sCustLastName,sCustFirstName,sDealerNumber,sProductCode,sVIN) Values ('Ln4','Fn4','TWS00967','PPM','19XFC2F76JE003513')

3. 执行查询后的结果

Count sCustLastName sCustFirstName sDealerNumber sProductCode sVIN
1 Ln1 Fn1 TWS00967 GAP 1HGCR2F5XHA151050
2 Ln1 Fn1 TWS00967 GAP 1HGCR2F5XHA151050
3 Ln1 Fn1 TWS00967 GAP 1HGCR2F5XHA151050
1 Ln2 Fn2 TWS00968 GAP WVWEV7AJXAW197040
2 Ln2 Fn2 TWS00968 GAP WVWEV7AJXAW197040
1 Ln3 Fn3 TWS00967 GAP 2HGFC2F56GH536572
2 Ln3 Fn3 TWS00967 GAP 2HGFC2F56GH536572
1 Ln4 Fn4 TWS00967 PPM 19XFC2F76JE003513
2 Ln4 Fn4 TWS00967 PPM 19XFC2F76JE003513
3 Ln4 Fn4 TWS00967 PPM 19XFC2F76JE003513

小提示

  • PARTITION BY后面的字段是分组的核心依据,确保同一组的记录这些字段值完全一致;
  • ORDER BY用来定义每组内的编号顺序,因为同组记录都是重复的,所以选任意字段都不会影响最终编号结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:08:32