关于序号的SQL
有一明细表A存储的数据如下
编号 品名 数量
A001 品名一 100
A001 品名二 110
B002 品名一 200
B002 品名二 220
B002 品名三 220
C003 品名一 300
欲通过SQL得到如下结果,在原基础上加一序号
序号 编号 品名 数量
1 A001 品名一 100
1 A001 品名二 110
2 B002 品名一 200
2 B002 品名二 220
2 B002 品名三 220
3 C003 品名一 300
原则是按“编号”排序,相同编号的序号相同,编号不同,则序号在上面的序号的基础上加1。与“品名”和“数量”无关
------解决方案--------------------select (select count(distinct 编号) from 表 where 编号 <=t.编号) as 序号,编号,品名,数量 from 表 t
------解决方案--------------------select b.id,a.* from test a
inner join
(select code,row_number() over(order by code) as id from
(select distinct code from test)aa ) b
on a.code=b.code
------解决方案--------------------declare @a table(a int,b varchar(4),c varchar(10),d int)
declare @i int,@aa varchar(4)
set @i=0
set @aa= ' '
insert @a(b,c,d) select * from 表A
update @a set a=@i,@i=(case when @aa <> b then @i+1 else @i end),@aa=b
select * from @A
-----------------------
create table 表A(编号 varchar(4),品名 varchar(10),数量 int)
insert 表A select
'A001 ', '品名一 ',100 union select
'A001 ', '品名二 ',110 union select
'B002 ', '品名一 ',200 union select
'B002 ', '品名二 ',220 union select
'B002 ', '品名三 ',220 union select
'C003 ', '品名一 ',300
前台实现最好