Как получить последнюю запись сотрудника в оракуле?

У меня есть таблица сотрудников со столбцами, такими как emp_id, имя, фамилия, region_id, статус и дата_действия.

Employee Table может иметь несколько записей для одного сотрудника с разными датами вступления в силу и статусами.

Employee может иметь два статуса «Leaver» и «Joiner».

id     emp_id    firstname     region    status     effective_date  
1       1         James        Asia      Joiner     1-Jan-2012 
2       1         James        UK        Leaver     1-Aug-2012
3       1         James        USA       Joiner     1-Aug-2012
4       1         James        Asia      Leaver     1-May-2012
5       1         James        UK        Joiner     1-May-2012
6       1         James        USA       Leaver     1-Sep-2012

С указанными выше данными в таблице сотрудников, если я хочу получить самую последнюю запись о Джеймсе по состоянию на 1 января 2012 года, я получу запись с id = 1,

Если бы я хотел получить самую последнюю запись о Джеймсе, как 1 мая 2012 года, я бы получил запись с id = 5

Если бы я хотел получить самую последнюю запись о Джеймсе по состоянию на 1 августа 2012 года, я бы получил запись с id = 3,

Если бы я хотел получить самую последнюю запись о Джеймсе, как 1 сентября 2012 года, я бы получил запись с id = 6

Следующий запрос правильно дает мне последнюю запись

SELECT 
        emp_id, 
        MAX(effective_date) AS latest_effective_date
FROM 
        EMPLOYEE
GROUP BY 
        emp_id

Но тогда как мне получить другие столбцы, такие как имя, регион и т. Д.

Если я помещу их в предложение выбора или группу по предложению, я получу не только последнюю запись, но и другие записи.

Ответы на вопрос(5)

Ваш ответ на вопрос