日期:2014-05-20  浏览次数:20874 次

求一sql语句(排名次)
SQL code

有一学生成绩表
create table scores
(
SID INT NOT NULL,--学生编号
CLASS_ID INT ,--班级
SCORE FLOAT,--分数
classpank  int ,--班内名次(默认值为NULL)
............
)





现在学生成绩表的信息已经录入(学生编号,班级编号,分数),但是classpank(班内名次)还是空的。
现在需要写个update语句,将每个学生在本班的名次得出来---

请问这个语句怎么写呢????

------解决方案--------------------
update scores set scores.classpank=t.classpank from scores,(select [SID],ROW_NUMBER() over( partition by CLASS_ID order by SCORE desc) as classpank from scores)t 
where scores.[SID]=t.[SID];
------解决方案--------------------
忘加了个判断。
update scores set classpank =( select count(1) from scores where classpank>=1 )+1 where CLASS_ID in ( select CLASS_ID from scores SCORE = (select max(SCORE) from scores where classpank=="" ) )