日期:2014-05-18  浏览次数:20390 次

SQL server表中数据排序问题
我在sql server 2000数据库中建了一个成绩表,其中一列为“成绩”列,一列为“名次”列(即按成绩的排名)。“成绩”列我采用了降序排列,但我同时想让“名次”列自动按成绩的大小实现从1开始依次递增的升序排列。请问各位高手,怎样才能做到这点。谢谢!

------解决方案--------------------
你是成绩 和名次两个字段?
按照你说的,只要按照任意一个字段排一下不就可以了
------解决方案--------------------
SQL code

--不分学科
select *,
rank()over(order by 成绩 desc) as 名次 from tbl
--分学科
select *,
rank()over(partition by 课程 order by 成绩 desc) as 名次 from tbl

------解决方案--------------------
SQL code
select *,名次=(select count(*) from tb where 成绩>=a.成绩)
from tb a order by 成绩 desc

------解决方案--------------------
SQL code

SELECT *,名次=ROW_NUMBER() OVER (ORDER BY 成绩 DESC) FROM tb ORDER BY 成绩 DESC