0

我有一张表,可以看成是在几次课堂测试中对两门课程的评价,像这样:

student_ID     Evaluation           Course1   Course2
------------------------------------------------------
1                   5                 88         93
2                   4                 70         87
1                   5                 93         90
2                   5                 99         91
3                   3                 65         60
3                   4                 88         70

我需要得到每个学生的评估结果=5(如果有的话)。如果该学生有多个评价=5,则查询仅显示其中任何一个。所以对于上面的示例表,查询结果将是

student_ID     Evaluation           Course1   Course2
------------------------------------------------------
1                   5                 88         93
2                   5                 99         91

当然,在我的真实表中,“Courses”数量超过 2。

谢谢您的帮助。

4

1 回答 1

2

由于您只想为 each 获取一条记录student_id,因此您可以使用ROW_NUMBER()which 生成序列号。生成的数字将始终以1您可以用来过滤掉每个分区的行的开头,在这种情况下Student_ID

SELECT  Student_ID, Evaluation, Course1, Course2
FROM    
        (
            SELECT  Student_ID, Evaluation, Course1, Course2,
                    ROW_NUMBER() OVER (PARTITION BY Student_ID 
                    ORDER BY Student_ID) rn
            FROM    TableName
            WHERE   Evaluation = 5
        ) a
WHERE   a.rn = 1
于 2013-09-29T20:51:00.437 回答