日期:2014-05-17  浏览次数:20428 次

Sql row_number使用
SQL code

由
          BillNO           cNo
    00893283*1    T8600962858523
    00893283*2    T8600962858523
    00893283*3    T8600962858523
    00893283*4    T8600962858523

    00893284*1    T8600962858523
    00893284*2    T8600962858523
    00893284*3    T8600962858523
    00893284*4    T8600962858523

    00893285*1    T8600962858523
    00893285*2    T8600962858523
    00893285*3    T8600962858523
    00893285*4    T8600962858523

得到如下序号(Num)。请问如何实现
Num        BillNO           cNo
1    00893283*1    T8600962858523
1    00893283*2    T8600962858523
1    00893283*3    T8600962858523
1    00893283*4    T8600962858523

2    00893284*1    T8600962858523
2    00893284*2    T8600962858523
2    00893284*3    T8600962858523
2    00893284*4    T8600962858523

3    00893285*1    T8600962858523
3    00893285*2    T8600962858523
3    00893285*3    T8600962858523
3    00893285*4    T8600962858523





------解决方案--------------------
修正下
SQL code

declare @test table(BillNO varchar(15),cNo varchar(20))
insert into @test
select '00893283*1',    'T8600962858523' union all
select '00893283*2',    'T8600962858523' union all
select '00893283*3',    'T8600962858523' union all
select '00893283*4',    'T8600962858523' union all
select '00893284*1',    'T8600962858523' union all
select '00893284*2',    'T8600962858523' union all
select '00893284*3',    'T8600962858523' union all
select '00893284*4',    'T8600962858523' union all
select '00893285*1',    'T8600962858523' union all
select '00893285*2',    'T8600962858523' union all
select '00893285*3',    'T8600962858523' union all
select '00893285*4',    'T8600962858523'

select dense_rank() over(order by substring(BillNO,1,charindex('*',BillNO)-1)) Num,BillNO,cNo from @test

/*
Num                  BillNO          cNo
-------------------- --------------- --------------------
1                    00893283*1      T8600962858523
1                    00893283*2      T8600962858523
1                    00893283*3      T8600962858523
1                    00893283*4      T8600962858523
2                    00893284*1      T8600962858523
2                    00893284*2      T8600962858523
2                    00893284*3      T8600962858523
2                    00893284*4      T8600962858523
3                    00893285*1      T8600962858523
3                    00893285*2      T8600962858523
3                    00893285*3      T8600962858523
3                    00893285*4      T8600962858523
*/