SQL最多分组两列

时间:2015-03-29 21:29:38

标签: sql sql-server group-by

我在使用我认为应该是组方法的两个表中显示数据时遇到问题。 我目前有一个包含学生的表格,另一个包含每年和每个学期达到的成绩(分数)。见下文:

PupilID, FirstName, Surname, DOB

GradeID, PupilID, SchoolYear, Term, Points

我想查询两个表并显示所有学生的最新成绩,这应该查找最大的SchoolYear,然后是最大的Term,并在PupilID,FirstName和Surname旁边显示Points。

我很感激任何人都可以提供的帮助

2 个答案:

答案 0 :(得分:1)

这将根据SchoolYearTerm

选择每位学生的最新成绩
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