¿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.

Respuestas a la pregunta(5)

Su respuesta a la pregunta