首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

Sql row_number运用

2013-01-11 
Sql row_number使用由BillNOcNo00893283*1T860096285852300893283*2T860096285852300893283*3T86009628585

Sql row_number使用



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

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

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

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

200893284*1T8600962858523
200893284*2T8600962858523
200893284*3T8600962858523
200893284*4T8600962858523

300893285*1T8600962858523
300893285*2T8600962858523
300893285*3T8600962858523
300893285*4T8600962858523



[解决办法]
修正下

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
*/


热点排行