只需要返回每个员工记录的最大开始日期行

问题描述 投票:0回答:1

我正在构建一个查询来返回员工记录的最新数据 - 他们可以有多行数据,我需要它根据每行的最大开始日期进行过滤 - 我已经在网上查看并尝试按照建议进行构建,但是似乎不起作用

我尝试过的基本版本是:

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;
sql oracle-sqldeveloper
1个回答
0
投票

您可以对员工进行分组,并轻松地仅获取最长开始日期


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
© www.soinside.com 2019 - 2024. All rights reserved.