我正在构建一个查询来返回员工记录的最新数据 - 他们可以有多行数据,我需要它根据每行的最大开始日期进行过滤 - 我已经在网上查看并尝试按照建议进行构建,但是似乎不起作用
我尝试过的基本版本是:
select
Tb1.PERSON_NO, Tb2.START_DATE
from (Select Tb1.PERSON_NO, Tb2.START_DATE, (MAX)START_DATE OVER (PARTITION BY PERSON_NO) AS LATEST_START
FROM Tb1
INNER JOIN Tb2 on Tb1.PERSON_NO = Tb2.PERSON_NO)
WHERE Tb2.START_DATE = LATEST_START;
我也尝试过
SELECT Tb1.PERSON_NO, Tb2.START_DATE
FROM Tb1
INNER JOIN Tb2 on Tb1.PERSON_NO = Tb2.PERSON_NO
where (select MAX(Tb2.START_DATE) OVER (PARTITION BY Tb1.PERSON_NO)) = Tb2.START_DATE;
您可以对员工进行分组,并轻松地仅获取最长开始日期
select
Tb1.PERSON_NO,
max(Tb2.START_DATE)
FROM Tb1
INNER JOIN Tb2 on Tb1.PERSON_NO = Tb2.PERSON_NO
GROUP BY
TB1.PERSON_NO