直接用下面的语句就行了.select 学号,(select count(distinct *) from 成绩表 where 总分>=a.总分) as 排名 from 成绩表 a
那就是这样啦 select 学号,考次,(select count(distinct 总分) from 成绩表 where 总分>=a.总分 and 考次=a.考次) as 排名 from 成绩表 a
当然不是.你有没有做过测试? --创建数据测试环境 declare @tb table(学号 varchar(2),总分 int,考次 int) insert into @tb select '01',100,1 union all select '02',65, 1 union all select '03',86, 2 union all select '03',78, 2--查询得到结果 select 学号,考次,(select count(distinct 总分) from @tb where 总分>=a.总分 and 考次=a.考次) as 排名 from @tb a
select a.a 学号,a.b 成绩,排名=count(*) from a a join a b on a.b>b.b group by a.a,a.b order by a.b
select 学号,总分,1+isnull((select count(*) from 成绩表 where 总分<a.总分),0) as 排名 from 成绩表 a order by 总分 desc 也可以用join on来查询,如楼上upup兄弟!
Order by 总分 descSelect * from #tmpSelect * from #tmp where 排名号=第几行
select * from #temp
drop table #temp
有什么用啊,
如果我建立了一个临时表怎么在用完后删掉呢???
from 成绩表 a
select 学号,考次,(select count(distinct 总分) from 成绩表 where 总分>=a.总分 and 考次=a.考次) as 排名
from 成绩表 a
--创建数据测试环境
declare @tb table(学号 varchar(2),总分 int,考次 int)
insert into @tb
select '01',100,1
union all select '02',65, 1
union all select '03',86, 2
union all select '03',78, 2--查询得到结果
select 学号,考次,(select count(distinct 总分) from @tb where 总分>=a.总分 and 考次=a.考次) as 排名
from @tb a
from
a a
join
a b
on
a.b>b.b
group by a.a,a.b
order by a.b
from 成绩表 a
order by 总分 desc
也可以用join on来查询,如楼上upup兄弟!