求一SQL 指令
有一表如下 :
create table tab(col1 char(10),col2 char(10))
insert tab
select 'A ', 'a1 '
union all select 'B ', 'a2 '
union all select 'B ', 'a3 '
union all select 'B ', 'a4 '
union all select 'C ', 'a5 '
union all select 'C ', 'a6 '
union all select 'D ', 'a7 '
想得到如下的结果:
-col1----col2------col3--
A a1 0001
B a2 0001
B a3 0002
B a4 0003
C a5 0001
C a6 0002
D a7 0001
------解决方案--------------------create table tab(col1 char(10),col2 char(10))
insert tab
select 'A ', 'a1 '
union all select 'B ', 'a2 '
union all select 'B ', 'a3 '
union all select 'B ', 'a4 '
union all select 'C ', 'a5 '
union all select 'C ', 'a6 '
union all select 'D ', 'a7 '
GO
Select *, Right(10000 + (Select Count(col1) From tab Where col1 = A.col1 And col2 <= A.col2), 4) As col3 From tab A
GO
Drop Table tab
--Result
/*
Col1 Col2 Col3
A a1 0001
B a2 0001
B a3 0002
B a4 0003
C a5 0001
C a6 0002
D a7 0001
*/