求一条排序的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