SQLServer中按某字段排列名次
敬业的IT人
互联网
佚名
2008-1-4 16:58:28
---居然看到有人用游标,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
*/
- 最新文章
- Delphi使用方法[01-04]
- 如何在状态栏中加入图标(或图片),还有动态的时间[01-04]
- 游戏开发者社区对底层API的投票[01-04]
- 用pascal写的最简单的winsock程序[01-04]
- Delphi简介[01-04]
- 浅谈控件(组件)制作方法一(附带一delphi导出数据到Ex..[01-04]
- 相关文章
- DELPHI中动态获得SQLSERVER数据库名[01-04]
- 用Delphi对SQL-DMO进行封装的一种实现[01-04]
- 使用SQLSERVER的扩展存储过程实现远程备份与恢复[01-04]
- 设计模式、用Delphi描述-->Observer模式[01-04]
- 剪贴板中的观察者Observer模式[01-04]
- IIS+PHP+MySQL+Zend Optimizer+G..[01-04]
