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

解决方案 »

  1.   


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

  2.   

    2000没有rank函数
    select *,名次=(select count(*) from tb where 成绩>=a.成绩)
    from tb a order by 成绩 desc
      

  3.   


    select *,名次=(select count(*) + 1 from tb where 成绩 > a.成绩)
    from tb a order by 成绩 desc