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

关于序号的SQL,该怎么解决

2012-01-01 
关于序号的SQL有一明细表A存储的数据如下编号品名数量A001品名一100A001品名二110B002品名一200B002品名二

关于序号的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
前台实现最好

热点排行