¿Cómo obtener el último registro de empleado en Oracle?
Tengo una tabla de empleados con columnas como emp_id, primer nombre, apellido, region_id, estado y vigente.
La tabla de empleados puede tener varias entradas para el mismo empleado con diferentes fechas y estados efectivos.
El empleado puede tener dos estados 'Leaver' y '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
Con los datos anteriores en la tabla de empleados, si quisiera obtener el último registro de James como el 1 de enero de 2012, obtendría el registro con id = 1,
Si quisiera obtener el último registro de James como el 1 de mayo de 2012, obtendría el registro con id = 5
Si quisiera obtener el último registro de James como el 1 de agosto de 2012, obtendría el registro con id = 3,
Si quisiera obtener el último registro de James como el 1 de septiembre de 2012, obtendría el registro con id = 6
Seguir la consulta correctamente me da el último registro
SELECT
emp_id,
MAX(effective_date) AS latest_effective_date
FROM
EMPLOYEE
GROUP BY
emp_id
Pero entonces, ¿cómo obtengo las otras columnas, como primer nombre, región, etc.?
Si los pongo en una cláusula selecta o en una cláusula grupo por grupo, no solo obtengo el último registro, sino también los otros registros.