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

如何在一个查询里得到顺序号

2013-06-26 
怎么在一个查询里得到顺序号?两个表(例如主从表)进行联合查询例如主表是这样:表名:TMainMid001002从表:TCh

怎么在一个查询里得到顺序号?
两个表(例如主从表)进行联合查询
例如主表是这样:
表名:TMain
Mid
001
002

从表:TChd
Mid name
001 jack
001 mary
001 rose
……
怎么样通过一个语句得到如下的结果
Mid serio name
001 01   jack
001 02   mary
001 03   rose
……
其中serio是根据数据库默认的顺序给排的号。类似用如下的语句


select a.mid,XX as serio,b.name from Tmain a, Tchd b where a.mid=b.mid

[解决办法]
select a.mid,row_number() OVER(order by a.mid DESC) as serio,b.name from Tmain a, Tchd b where a.mid=b.mid 

[解决办法]

create table TMain(Mid varchar(10))

insert into TMain
select '001' union all
select '002'

create table TChd
(Mid varchar(10), name varchar(10))

insert into TChd
select '001', 'jack' union all
select '001', 'mary' union all
select '001', 'rose'


select a.Mid,
       replicate('0',2-len(b.rn))+rtrim(b.rn) 'serio',
       b.name
 from TMain a
 inner join (select Mid,name,
             row_number() over(partition by Mid order by getdate()) 'rn'
             from TChd) b on a.Mid=b.Mid

/*
Mid        serio      name
---------- ---------- ----------
001        01         jack
001        02         mary
001        03         rose

(3 row(s) affected)
*/

[解决办法]
用 row_number() OVER
[解决办法]
select a.mid,row_number() OVER(order by a.mid DESC) as serio,b.name from Tmain a, Tchd b where a.mid=b.mid 
还是这个简洁

热点排行