Sql server 为每个学生选择他们所学科目的最新考试分数
我试着从表格中抽取所有最新的考试成绩,每个学生所学的科目的考试成绩。下面的例子Sql server 为每个学生选择他们所学科目的最新考试分数,sql-server,Sql Server,我试着从表格中抽取所有最新的考试成绩,每个学生所学的科目的考试成绩。下面的例子 STUDENT_ID SUBJECT SCORE TEST_DATE 1 math 90% 11/5/2018 1 math 88% 1/12/2019 1 science 74% 12/9/2018 2 math 79% 10/10/2018 2
STUDENT_ID SUBJECT SCORE TEST_DATE
1 math 90% 11/5/2018
1 math 88% 1/12/2019
1 science 74% 12/9/2018
2 math 79% 10/10/2018
2 science 68% 2/25/2019
1 science 72% 6/14/2018
2 art 93% 9/22/2018
3 art 73% 10/20/2018
Desired output:
STUDENT_ID SUBJECT SCORE TEST_DATE
1 math 88% 1/12/2019
1 science 74% 12/9/2018
2 math 79% 10/10/2018
2 science 68% 2/25/2019
2 art 93% 9/22/2018
3 art 73% 10/20/2018
你可以利用这一点
select STUDENT_ID
, SUBJECT
, SCORE
, TEST_DATE
from
(
select STUDENT_ID
, SUBJECT
, SCORE
, TEST_DATE
, RowNum = ROW_NUMBER()over(partition by STUDENT_ID, SUBJECT order by TEST_DATE DESC)
from TestScores
) x
where x.RowNum = 1
为此:
select student_id, subject, max(test_date) maxdate
from tablename
group by student_id, subject
你可以得到每个学生和科目的所有最新日期,
因此,您可以将其加入到表中,并获得所需的结果:
select t.*
from tablename t inner join (
select student_id, subject, max(test_date) maxdate
from tablename
group by student_id, subject
) g
on g.student_id = t.student_id and g.subject = t.subject and g.maxdate = t.test_date
完美的正是我需要的。谢谢,肖恩。