sql数据库,查询每个学生数学成绩时间最新的那一笔记录,求帮助!

数据库版本 SQL Server Management Studio 2008
学生成绩表 Students_Achievement
学号 StudentID
姓名 Name
科目 Subiject
成绩 Achievement
考试时间 Time


学号 姓名 科目 成绩 考试时间
202201 张三 语文 110 2022/1/10
202201 张三 数学 125 2022/1/10
202201 张三 语文 99 2022/1/4
202201 张三 数学 105 2022/1/4

学号 姓名 科目 成绩 考试时间
202202 李四 语文 115 2022/1/9
202202 李四 数学 102 2022/1/9
202202 李四 语文 90 2022/1/5
202202 李四 数学 110 2022/1/5

学号 姓名 科目 成绩 考试时间
202203 王五 语文 120 2022/1/12
202203 王五 数学 114 2022/1/12
202203 王五 语文 100 2022/1/6
202203 王五 数学 80 2022/1/6


想得到的查询效果:
学号 姓名 科目 成绩 考试时间
202201 张三 数学 125 2022/1/10
202202 李四 数学 102 2022/1/9
202203 王五 数学 114 2022/1/12

谢谢指导!

SQL Server 2012 起,开始支持开窗函数,

select * from (
select sa.*,
row_number() over (partition by StudentID,Subiject order by Time desc) rn   
from Students_Achievement as sa ) as a
where a.rn =1

但sqlserver2008不支持开窗函数,所以这个写起来会比较麻烦

select * from Students_Achievement where (StudentID,Subiject ,Time ) 
in (select StudentID,Subiject ,max(Time) from Students_Achievement  
group by StudentID,Subiject );

还有没有人能提出一个更加简洁易懂的逻辑?

我想的是,反正已知考试时间和科目的话,SQL如下

SELECT STUDEENTID,NAME,SUBJECT,Achievement,TIME
FROM TABLE
WHERE SUBJECT='数学' AND TIME='2022-01-12';