原数据
NO KP qty
--       --       -- 
RO0001 HH001 2
RO0001 HH005 3
RO0001 HH009 4
RO0001 HS003 5
RO0002 HH001 44
RO0002 HH005 12
RO0003 XX001 66
RO0003 XX002 3
RO0003 XH001 2
RO0003 XX004 4实现成
NO ITEM KP qty
--       --       --        --
RO0001 1 HH001 2
RO0001 2 HH005 3
RO0001 3 HH009 4
RO0001 4 HS003 5
RO0002 1 HH001 44
RO0002 2 HH005 12
RO0003 1 XX001 66
RO0003 2 XX002 3
RO0003 3 XH001 2
RO0003 4 XX004 4
谢谢!

解决方案 »

  1.   

    select 
    *,
    ITEM=(select COUNT(*) from tb where t.NO=no and kp<=t.kp)
    from tb t 
      

  2.   

    select * ,ITEM =row_number() over(partition by no ,order by no) from tb
      

  3.   

    --2
    select 
    *,
    ITEM=(select COUNT(*) from tb where t.NO=no and kp<=t.kp)
    from tb t 
      

  4.   

    ---测试数据---
    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([NO] varchar(6),[KP] varchar(5),[qty] int)
    insert [tb]
    select 'RO0001','HH001',2 union all
    select 'RO0001','HH005',3 union all
    select 'RO0001','HH009',4 union all
    select 'RO0001','HS003',5 union all
    select 'RO0002','HH001',44 union all
    select 'RO0002','HH005',12 union all
    select 'RO0003','XX001',66 union all
    select 'RO0003','XX002',3 union all
    select 'RO0003','XH001',2 union all
    select 'RO0003','XX004',4
     
    --增加列
    alter table tb add  ITEM int;--更新列
    update t
    set t.ITEM=(select count(1)+1 from tb where no=t.no and kp<t.kp)
    from tb t---查询---
    select * from [tb] order by no,item---结果---
    NO     KP    qty         ITEM        
    ------ ----- ----------- ----------- 
    RO0001 HH001 2           1
    RO0001 HH005 3           2
    RO0001 HH009 4           3
    RO0001 HS003 5           4
    RO0002 HH001 44          1
    RO0002 HH005 12          2
    RO0003 XH001 2           1
    RO0003 XX001 66          2
    RO0003 XX002 3           3
    RO0003 XX004 4           4(所影响的行数为 10 行)