有表Student如下
学号      姓名      成绩
041201    A          94
041202    B          75.5
041203    C          82
要求Select 学号 姓名 成绩 和 排名 
选择效果如下:
学号      姓名      成绩    排名
041201    A          94      1
041202    B          75.5    3
041203    C          82      2

解决方案 »

  1.   

    Select A.*,(Select Count(*)+1 From Student Where 成绩>A.成绩) As 排名
    From Student A
      

  2.   

    兩種不同的排名方法,看樓主需要哪種了。(主要是有相同成績情況下的排名)Create Table Student
    (学号 Char(6),
     姓名 Varchar(10), 
     成绩 Numeric(10,1))
    Insert Student Select '041201',    'A',          94
    Union All Select '041202',    'B',          75.5
    Union All Select '041203',    'C',          82
    Union All Select '041205',    'D',          82
    GO
    Select A.*,(Select Count(*)+1 From Student Where 成绩>A.成绩) As 排名 From Student A Order By 排名Select A.*,(Select Count(Distinct 成绩 )+1 From Student Where 成绩>A.成绩) As 排名 From Student A Order By 排名
    Go
    Drop Table Student
    --Result
    /*
    学号 姓名 成绩 排名
    041201 A 94.0 1
    041203 C 82.0 2
    041205 D 82.0 2
    041202 B 75.5 4学号 姓名 成绩 排名
    041201 A 94.0 1
    041203 C 82.0 2
    041205 D 82.0 2
    041202 B 75.5 3
    */