假设我有这样的表结构:
create table #Test (name varchar(100))
insert into #Test (name) values ('Ian')
insert into #Test (name) values ('Dave')
insert into #Test (name) values ('Simon')
insert into #Test (name) values ('Tim')
insert into #Test (name) values ('Andy')
insert into #Test (name) values ('Sarah')
如何获得这样的结果集:
1 Ian
2 Dave
3 Simon
4 Tim
5 Andy
6 Sarah
我尝试使用行号()和密集等级(),但我没有成功。
答案 0 :(得分:0)
使用row_number() over (order by (select null))
可能有效,但我认为顺序不保证按插入顺序排列 - 如果未明确排序,则从select语句返回的数据表示无序集。
最佳解决方案是在插入时添加标识列或时间戳。
select * , r = row_number() over (order by (select null)) from #Test
或者您可以更改表格以添加标识列,如下所示:
alter table #test add id int identity(1,1)