SQLServer中按某字段排列名次
2006-02-04 13:51:38 来源:WEB开发网核心提示:---居然看到有人用游标,SQL就能搞定create table Test(F1 char(10), F2 char(10))--测试表insert into Test select 'a' F1,'1' F2unionselect 'b' F1,'2'
---居然看到有人用游标,SQL就能搞定----
create table Test
(F1 char(10),
F2 char(10))
--测试表
insert into Test
select 'a' F1,'1' F2
union
select 'b' F1,'2' F2
union
select 'c' F1,'3' F2
union
select 'd' F1,'3' F2
union
select 'e' F1,'4' F2
union
select 'f' F1,'4' F2
union
select 'g' F1,'4' F2
union
select 'h' F1,'7' F2
union
select 'i' F1,'9' F2
--插入数据
select id=identity(int,0,1),f1,f2 into #t from test order by F2 desc
select a.f1,a.f2,a.id+1-cast(id-cc-minn as Char(10)) as [名次]
from #t a,
(select f2,cc,minn from
(select f2,count(*)as cc,min(id)-count(*) as minn from #t group by f2) t)b
where a.f2=b.f2
order by a.f2 desc
--测试
drop table #t
drop table test
--删除表
/*
i 9 1
h 7 2
g 4 3
e 4 3
f 4 3
c 3 6
d 3 6
b 2 8
a 1 9
*/
create table Test
(F1 char(10),
F2 char(10))
--测试表
insert into Test
select 'a' F1,'1' F2
union
select 'b' F1,'2' F2
union
select 'c' F1,'3' F2
union
select 'd' F1,'3' F2
union
select 'e' F1,'4' F2
union
select 'f' F1,'4' F2
union
select 'g' F1,'4' F2
union
select 'h' F1,'7' F2
union
select 'i' F1,'9' F2
--插入数据
select id=identity(int,0,1),f1,f2 into #t from test order by F2 desc
select a.f1,a.f2,a.id+1-cast(id-cc-minn as Char(10)) as [名次]
from #t a,
(select f2,cc,minn from
(select f2,count(*)as cc,min(id)-count(*) as minn from #t group by f2) t)b
where a.f2=b.f2
order by a.f2 desc
--测试
drop table #t
drop table test
--删除表
/*
i 9 1
h 7 2
g 4 3
e 4 3
f 4 3
c 3 6
d 3 6
b 2 8
a 1 9
*/
- ››sqlserver 每30分自动生成一次
- ››sqlserver安装和简单的使用
- ››SqlServer触发器、存储过程和函数
- ››SQLServer建立交叉表查询
- ››SqlServer强制断开数据库连接的方法
- ››SQLServer 2005 海量数据解决方案
- ››SQLServer 2008数据库查看死锁、堵塞的SQL语句
- ››SqlServer 插入多条数据
- ››SQLServer 2008 R2导出的SQL文件中没有数据
- ››SQLSERVER通过游标查询两个数据表共有字段名组合成...
- ››sqlserver2008实现拼音首字母和随机n位数的生成
- ››SQLServer与Java数据类型对应表
更多精彩
赞助商链接