日期:2014-05-19  浏览次数:20467 次

求一条排序的sql语句
table   f   包括两个字段
A         B
a1         100
a2         99
a3         80
a4         90
a5         79
a6         79
a7         79
a8         70
求一条语句执行结果为:

a1         100
a2         99
a4         90
a3         80
a5         79
a6         79
a7         79

即取前5名,第5名如果分数相同则全部取上。


------解决方案--------------------
create table t(A varchar(10),B int)
insert t select 'a1 ',100
union all select 'a2 ',99
union all select 'a3 ',80
union all select 'a4 ',90
union all select 'a5 ',79
union all select 'a6 ',79
union all select 'a7 ',79
union all select 'a8 ',70


select A,B from
(
select top 100 percent *,名次=(select count(1)+1 from t where B> a.B) from t a
order by 名次
)a
where 名次 <=5

A B
---------- -----------
a1 100
a2 99
a4 90
a3 80
a5 79
a6 79
a7 79