如何 return 仅将日期字段上的最新记录拆分为两个
How do I return only the most recent record on a date field split into two
场景:A 在两年内参加了 3 次 B 考试。该人将有三个条目。但是,我需要编写一个查询,告诉我参加测试的人数(只有一个,最新的测试)。问题是我有一个标记为 Test_Month (xx) 和 Test_year(xx).
的列
我需要什么:我需要能够使用最近的测试月份和年份进行测试,基本上是他们最近参加的测试。 (例如(见下图)我需要,只需要2/20的记录。)
我不知道如何根据单独的列 test_Month 和 test_year.
根据他们进行的最后一次测试只检索每个人的一条记录
您可以使用 window 函数:
select *
from (
select
t.*,
row_number() over(
partition last_name, firt_name
order by test_year desc, test_month desc
) rn
from mytable t
) t
where rn = 1
场景:A 在两年内参加了 3 次 B 考试。该人将有三个条目。但是,我需要编写一个查询,告诉我参加测试的人数(只有一个,最新的测试)。问题是我有一个标记为 Test_Month (xx) 和 Test_year(xx).
的列我需要什么:我需要能够使用最近的测试月份和年份进行测试,基本上是他们最近参加的测试。 (例如(见下图)我需要,只需要2/20的记录。)
我不知道如何根据单独的列 test_Month 和 test_year.
根据他们进行的最后一次测试只检索每个人的一条记录您可以使用 window 函数:
select *
from (
select
t.*,
row_number() over(
partition last_name, firt_name
order by test_year desc, test_month desc
) rn
from mytable t
) t
where rn = 1