读书人

求1sql语句加序号

发布时间: 2013-04-26 16:27:53 作者: rapoo

求一sql语句,加序号
表 T1

FID(自增列),FBH(编号),FMC(名称)
2 001 测试1
10 001 测试1A
5 002 鞋子
11 002 鞋子2号
21 002 鞋子3号

现在看这个数据 想增加一列 序号 实现下面 这种效果

FID(自增列),FBH(编号),FMC(名称) 序号
2 001 测试1 1
10 001 测试1A 2
5 002 鞋子 1
11 002 鞋子2号 2
21 002 鞋子3号 3

先不考虑表设计的好坏,现在只想解决这个问题。
主键是 FID 自增列
[解决办法]
select *,row_number() over(partition by FBH order by FBH)序号 from T1
[解决办法]


create table T1
(FID int,FBH int,FMC varchar(10))

insert into T1
select 2, 001, '测试1' union all
select 10, 001, '测试1A' union all
select 5, 002, '鞋子' union all
select 11, 002, '鞋子2号' union all
select 21, 002, '鞋子3号'


select FID,
FBH,
FMC,
row_number() over(partition by FBH order by FID) '序号'
from T1

/*
FID FBH FMC 序号
----------- ----------- ---------- ----------
2 1 测试1 1
10 1 测试1A 2
5 2 鞋子 1
11 2 鞋子2号 2
21 2 鞋子3号 3

(5 row(s) affected)
*/

------解决方案--------------------


select FID(自增列),FBH(编号),FMC(名称),row_number()over(partition by FBH(编号) order by fid)序号
from t1

[解决办法]

create table T1
(FID int ,FBH varchar(20),FMC varchar(20))

insert into T1
select 2 , '001', '测试1' union all
select 10 , '001', '测试1A' union all
select 5 , '002', '鞋子' union all
select 11 , '002', '鞋子2号'union all
select 21 , '002', '鞋子3号'

select *,ROW_NUMBER()over(partition by FBH order by FID)id from T1

FID FBH FMC id
----------- -------------------- -------------------- --------------------
2 001 测试1 1
10 001 测试1A 2
5 002 鞋子 1
11 002 鞋子2号 2
21 002 鞋子3号 3

(5 行受影响)

[解决办法]
select *,row_number()over(partition by fbh order by fid)n from tb

读书人网 >SQL Server

热点推荐