参考例子:
如:把原来的查询结果:
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'
goselect line=(select sum(1) from 表 where aa+'_'+bb+'_'+cc<=a.aa+'_'+a.bb+'_'+a.cc)
,* from 表 adrop 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'
goselect 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'
goalter table 表 add line int identity(1,1)
select * from 表
alter table 表 drop column linedrop table 表--结果:(所影响的行数为 3 行)
(所影响的行数为 3 行)aa bb cc line
-------------------- -------------------- -------------------- -----------
21 53 46 1
34 34 54 2
67 457 354 3(所影响的行数为 3 行)
如:把原来的查询结果:
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'
goselect line=(select sum(1) from 表 where aa+'_'+bb+'_'+cc<=a.aa+'_'+a.bb+'_'+a.cc)
,* from 表 adrop 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'
goselect 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'
goalter table 表 add line int identity(1,1)
select * from 表
alter table 表 drop column linedrop table 表--结果:(所影响的行数为 3 行)
(所影响的行数为 3 行)aa bb cc line
-------------------- -------------------- -------------------- -----------
21 53 46 1
34 34 54 2
67 457 354 3(所影响的行数为 3 行)
解决方案 »
- sql server profiler 这个能不能后台运行啊?
- 请教各位前辈: Bulk insert倒入文本数据的奇怪问题??十万火急!!!先谢啦!
- SQL Server2008 R2 在windows XP SP3中安装出错
- 其他机子上的master.mdf等文件 如何恢复到我机子上sql server 7.0下
- 如何在DateTime字段里只存储日期部分?
- 新人求教 大家帮忙
- 请问 SQL SEVER 2000 个人版 安装在XP系统下 使用Analysis Manager无法浏览多维数据集的原因是什么? 我安装了补丁asps
- %%%%%%%%%%%%%非常菜鸟的问题%%%%%%%%%%%%%
- SQL SERVER有关端口号的问题
- 请帮忙回答这个问题(急!!!)
- 如何在查询分析器中用语句把符合条件的记录输出到一个文件
- 各位请帮忙解决一下!!!
select *,(select count( name)+1 from st where str(stuid)+'-'+name+'-'+str(age)>str(a.stuid)+'-'+a.name+'-'+str(a.age)) as k from st a order by k
上面這個是好方法。