SQL-获取最大值以及所有其他列?
问题描述:
我有一个表,它可以被看作是两个课程评价几个课堂测验,就像这样:SQL-获取最大值以及所有其他列?
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
当然在我真正的表中,“课程”人数超过2
感谢您的帮助。
答
既然你只想每student_id
只得到一个记录,你可以使用ROW_NUMBER()
,它会产生序号。生成的编号始终始于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
哦,我的上帝!你太快了。非常感谢。 – user1816353