原贴:http://community.youkuaiyun.com/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.youkuaiyun.com/TrackBack.aspx?PostId=250961