我在使用我认为应该是组方法的两个表中显示数据时遇到问题。 我目前有一个包含学生的表格,另一个包含每年和每个学期达到的成绩(分数)。见下文:
PupilID, FirstName, Surname, DOB
GradeID, PupilID, SchoolYear, Term, Points
我想查询两个表并显示所有学生的最新成绩,这应该查找最大的SchoolYear,然后是最大的Term,并在PupilID,FirstName和Surname旁边显示Points。
我很感激任何人都可以提供的帮助
答案 0 :(得分:1)
这将根据SchoolYear
和Term
select * from (
select p.*, g.schoolyear, g.term,
row_number() over (partition by PupilID order by SchoolYear desc, Term desc) rn
from pupils p
join grades g on g.PupilID = p.PupilID
) t1 where rn = 1
答案 1 :(得分:0)
试试这个
declare varSchoolYear int
declare vartrem int
set varSchoolYear=(select max (SchoolYear) from Grade)
set vartrem=(select max(term) from Pupil where SchoolYear=varSchoolYear)
select a.firstname,b.idgrade
from pupil a
inner join grade b
on a.pupilid = b.pupilid
where b.term=vartrem and b.SchoolYear=varSchoolYear