找个max工号,把相同的选出来,然后max工号+rowid,保存。

解决方案 »

  1.   

    --drop table tb
    create table tb (序号 int ,工号 char(10),姓名 varchar(7))
    insert into tb 
    select'1','1000211234','王建'union all                             
    select'2','1000215678','李健'union all                             
    select'3','1000214231','王林'union all                             
    select'4','1000211234','王荣'union all                             
    select'5','1000211234','张是'union all                             
    select'6','1000215678','唐娟'union all                             
    select'7','1001214423','张军'union all                             
    select'8','1001214423','王建'                                      
    go
    select * from tb
    gowith cte  as
    (
    select *,ROW_NUMBER() over (partition  by 工号 order by 序号) as rn from tb
    )
    update  cte   set 工号= Cast(工号 as numeric(16,0))+ cast (rn as int)-1select * from tb--序号 工号 姓名
    --1 1000211234 王建
    --2 1000215678 李健
    --3 1000214231 王林
    --4 1000211235 王荣
    --5 1000211236 张是
    --6 1000215679 唐娟
    --7 1001214423 张军
    --8 1001214424 王建
      

  2.   

    先要有一个列例如UID为IDENTITY,没有就先创建一个
    SELECT * FROM XXX WHERE 工号 IN (
    SELECT 工号 FROM XXX GROUP BY  工号 HAVING COUNT(工号)>1)
    把那些UID的工号UPDATE就可以了