您的位置:首页 > 其它

在查询结果中如何加一个序列号!

2007-07-12 23:04 239 查看
原贴:http://community.csdn.net/Expert/topic/3714/3714430.xml?temp=.0695917
请问能否在查询结果内加上一列值,该列值标识的是查询出的记录的行号?
如:把原来的查询结果:
aa bb cc
21 53 46
34 34 54
67 457 354
变为
line aa bb cc
1 21 53 46
2 34 34 54
3 67 457 354

--解法一:如果 aa+bb+cc 能唯一确定一条记录,则:
create table 表(aa varchar(20), bb varchar(20), cc varchar(20) )
insert 表 select '21', '53', '46'
union all select '34', '34', '54'
union all select '67', '457', '354'
go

select line=(select sum(1) from 表 where aa+'_'+bb+'_'+cc<=a.aa+'_'+a.bb+'_'+a.cc)
,* from 表 a

drop table 表

--测试结果

(所影响的行数为 3 行)

line aa bb cc
----------- -------------------- -------------------- --------------------
1 21 53 46
2 34 34 54
3 67 457 354

(所影响的行数为 3 行)

--解法二,用临时表增加一个标识列字段

create table 表(aa varchar(20), bb varchar(20), cc varchar(20) )
insert 表 select '21', '53', '46'
union all select '34', '34', '54'
union all select '67', '457', '354'
go

select identity(int,1,1) as line,* into #t from 表
select * from #t

--结果:

line aa bb cc
----------- -------------------- -------------------- --------------------
1 21 53 46
2 34 34 54
3 67 457 354

(所影响的行数为 3 行)

--解法三:在物理表中添加一个字段后,最后删除

create table 表(aa varchar(20), bb varchar(20), cc varchar(20) )
insert 表 select '21', '53', '46'
union all select '34', '34', '54'
union all select '67', '457', '354'
go

alter table 表 add line int identity(1,1)
select * from 表
alter table 表 drop column line

drop table 表

--结果:

(所影响的行数为 3 行)

(所影响的行数为 3 行)

aa bb cc line
-------------------- -------------------- -------------------- -----------
21 53 46 1
34 34 54 2
67 457 354 3

(所影响的行数为 3 行)

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=250961
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: