您的位置:首页 > 其它

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

2005-12-15 13:58 204 查看
原贴: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 行)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: