高手们 帮我解决个问题 
写的详细点 简单点  越好
小弟在此感谢大家了如现在下表字段: tableA 
=================
ID
10C74
10C8
10D53
10E12
10E29
10E30
10E7
10E74
10E86
10E9
10F35
10G13
10H17
10H37
10K22
10K42
10M25
10M26
10M42
10M81
10N41
11A67
11B21
11B22
11B32
11C3
....
....
例如:
如果有一个9N1 改成 0909N001 
如果有两个 9N1一样 那么 其中一个改成  0909N001-01 
如果有三个 9N1一样 那么其中两个改成 0909N001-01 0909N001-02

解决方案 »

  1.   


    求一条SQL语句  OK?
      

  2.   

    dawugui 麻烦帮我个SQL语句咯 小弟在这里谢你了 简单点 
    我刚刚学SQL语句 
    我用的是2000的数据库
      

  3.   

    create table tb(id varchar(10))
    insert into tb values('9N1')
    insert into tb values('9N1')
    insert into tb values('9N1')
    insert into tb values('9N2')
    insert into tb values('9N2')
    insert into tb values('9N3')
    goselect id old_id , case when px = 1 then id else cast(id as varchar) + right('-0'+cast(px - 1 as varchar),3) end new_id from
    (
      select * , px = row_number() over(partition by id order by id) from tb
    ) tdrop table tb/*
    old_id     new_id
    ---------- ---------------------------------
    9N1        9N1
    9N1        9N1-01
    9N1        9N1-02
    9N2        9N2
    9N2        9N2-01
    9N3        9N3(6 行受影响)
    */
      

  4.   

    --sql 2000需要一个临时表.create table tb(id varchar(10))
    insert into tb values('9N1')
    insert into tb values('9N1')
    insert into tb values('9N1')
    insert into tb values('9N2')
    insert into tb values('9N2')
    insert into tb values('9N3')
    goselect id , px = identity(int,1,1) into tmp from tbselect id old_id , case when px = 1 then id else cast(id as varchar) + right('-0'+cast(px - 1 as varchar),3) end new_id from
    (
      select id , px = (select count(1) from tmp where id = t.id and px < t.px) + 1 from tmp t
    ) tdrop table tb , tmp/*
    old_id     new_id                               
    ---------- ------------------------------------ 
    9N1        9N1
    9N1        9N1-01
    9N1        9N1-02
    9N2        9N2
    9N2        9N2-01
    9N3        9N3(所影响的行数为 6 行)*/
      

  5.   

    --如果有两个 9N1一样 那么 其中一个改成  0909N001-01 
    --如果有三个 9N1一样 那么其中两个改成......--何谓“一个、两个....”:是相对于某条记录中,看9N1出现的次数,还是,字段中,记录排序后的位置呢?
      

  6.   

    dawugui
    Thank
    不过还有一个问题
    如果有一个9N1 就改成 0909N001 这样的形式 
      

  7.   

    dawugui比如:10C74 就改成 1010C074
    10N8  就改成 1010N008
    11B21 就改成 1111B021 将字段补齐