0

我有两张桌子。

Student (Roll_id,Student_name)
Student_mark (roll_id, semester, marks, subject)

我想要使​​用这两个表在学期和科目方面获得最高分的学生详细信息,他们的 roll_id、mark、semester、subject 是明智的。

我们可以在不使用光标的情况下获得结果吗?

4

1 回答 1

0

您可以使用RANK()函数按分数对学生进行排序(按学期和学科划分):

WITH RankedResults AS
(   SELECT  s.Roll_ID,
            s.Student_Name,
            sm.Semester,
            sm.Subject,
            sm.Marks,
            StudentRank = RANK() OVER(PARTITION BY sm.Semester, sm.Subject ORDER BY sm.Marks DESC)
    FROM    Student s
            INNER JOIN Student_Mark sm
                ON s.Roll_ID = sm.Roll_ID
)
SELECT  Roll_ID, Student_name, Semester, Subject, Marks
FROM    RankedResults
WHERE   StudentRank = 1;

SQL Fiddle 示例

于 2013-10-09T07:50:07.180 回答