我有以下表数据
正如您所看到的,给定学生一年内有多个记录和多个学校。我需要采取的结果是根据以下标准过滤学生
最后我每个学生只有一条记录。 所以在那之后我应该只有下面突出显示的数据,
我已经尝试了很多分组来解决这个问题,它会省略一些列。但我需要采取此处列出的所有列。
select max(val.sc_year) as lyear, max(val.enroll_date) as ldate,val.stident_id,val.student_name,val.school
from table val group by val.stident_id,val.student_name,val.school
答案 0 :(得分:1)
您希望获得每个学生和年份的最新行。 以下查询将帮助您。
SELECT * FROM
(
SELECT StusdentId, EnrolmentDate, Row_Number() OVER(PARTITION BY StusdentId ORDER By EnrolmentDate desc)
AS SRNo
FROM [StudentTable]
) AS B WHERE SRNo=1
答案 1 :(得分:0)
像下面这样的东西应该有效,至少它会返回黄色的行,所以每个学生只有一个记录独立于他学习了多少年:
select val.sc_year as lyear, val.enroll_date as ldate,val.stident_id,val.student_name,val.school
from table val
where
concat(val.enroll_date, val.student_id) in
(select concat(max(val.enroll_date), val.student_id) from val
group by val.student_id)