Как получить последнюю запись сотрудника в оракуле?
У меня есть таблица сотрудников со столбцами, такими как 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
Но тогда как мне получить другие столбцы, такие как имя, регион и т. Д.
Если я помещу их в предложение выбора или группу по предложению, я получу не только последнюю запись, но и другие записи.