当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 查询数据排名情况SQL

MSSQL
查看当前进程,或死锁进程,并能自动杀掉死进程
配置SQL Server 2000选项
使用SQL Mail收发和自动处理邮件中的扩展存储过程简介
如何删除数据库中的冗余数据(翻译)
SQL SERVER 2000系统支持的跟踪函数
异构数据库之间的导入导出
一个四用户信息同步更新的存储过程
Oracle数据库诊断案例-redo log日志组处于高激活状态
如何手动删除 SQL Server 2000 默认实例、命名实例或虚拟实例
ORACLE优化器
PL/SQL开发中动态SQL的使用方法
解决windows 2003+Sql2000中OLEDB分布式事务无法启动的解决方案
使用正规表达式编写更好的SQL
查看SQL Server数据空间分配情况
SQL Server编写存储过程小工具(一)
SQL Server编写存储过程小工具(二)
SQL Server编写存储过程小工具(三)
在IE中直接连接SQL数据库
Sql server数据库备份还原另一方法
Windows 2000下优化Oracle9i性能

MSSQL 中的 查询数据排名情况SQL


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 150 ::
收藏到网摘: n/a

查询数据排名情况SQL

1/准备测试数据

---------------------------------------------------------------------------------
create table t1(
c1 integer,
c2 integer,
c3 integer
);

insert into t1 values(1,2,3)

insert into t1 values(1,8,4)
insert into t1 values(1,4,4)

insert into t1 values(1,4,5)

insert into t1 values(1,5,5)

insert into t1 values(2,2,3)

insert into t1 values(2,8,4)
insert into t1 values(2,4,4)

insert into t1 values(2,4,5)

insert into t1 values(2,5,5)

2/查看排名

---------------------------------------------------------------------------------

A/单记录排名

select c1,c3,
(select count( c3)+1 from t1 a where a.c3>b.c3
and a.c1=b.c1 and a.c1 =1
) order_num
from t1 b
where c1 =1
order by c1,c3

c1 c3 order_num
----------- ----------- ----------------------
1 3 5
1 4 3
1 4 3
1 5 1
1 5 1
B/多记录排名

select c1,c2,c3,
(select count( c3)+1 from t1 a where a.c3>b.c3
and a.c1=b.c1
) order_num
from t1 b
order by c1,c3


c1 c2 c3 order_num
----------- ----------- ----------- ----------------------
1 2 3 5
1 8 4 3
1 4 4 3
1 4 5 1
1 5 5 1
2 2 3 5
2 8 4 3
2 4 4 3
2 4 5 1
2 5 5 1