- 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 cNo1 00893283*1 T86009628585231 00893283*2 T86009628585231 00893283*3 T86009628585231 00893283*4 T86009628585232 00893284*1 T86009628585232 00893284*2 T86009628585232 00893284*3 T86009628585232 00893284*4 T86009628585233 00893285*1 T86009628585233 00893285*2 T86009628585233 00893285*3 T86009628585233 00893285*4 T8600962858523
------解决方案--------------------
修正下
- SQL code
declare @test table(BillNO varchar(15),cNo varchar(20))insert into @testselect '00893283*1', 'T8600962858523' union allselect '00893283*2', 'T8600962858523' union allselect '00893283*3', 'T8600962858523' union allselect '00893283*4', 'T8600962858523' union allselect '00893284*1', 'T8600962858523' union allselect '00893284*2', 'T8600962858523' union allselect '00893284*3', 'T8600962858523' union allselect '00893284*4', 'T8600962858523' union allselect '00893285*1', 'T8600962858523' union allselect '00893285*2', 'T8600962858523' union allselect '00893285*3', 'T8600962858523' union allselect '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 T86009628585231 00893283*2 T86009628585231 00893283*3 T86009628585231 00893283*4 T86009628585232 00893284*1 T86009628585232 00893284*2 T86009628585232 00893284*3 T86009628585232 00893284*4 T86009628585233 00893285*1 T86009628585233 00893285*2 T86009628585233 00893285*3 T86009628585233 00893285*4 T8600962858523*/