Wie bekomme ich den neuesten Mitarbeiterrekord in Oracle?

Ich habe eine Mitarbeitertabelle mit Spalten wie emp_id, Vorname, Nachname, Regions-ID, Status und Gültigkeitsdatum.

Die Mitarbeitertabelle kann mehrere Einträge für denselben Mitarbeiter mit unterschiedlichen Gültigkeitsterminen und -status enthalten.

Der Mitarbeiter kann zwei Status haben: "Leaver" und "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

Wenn ich mit den obigen Daten in der Mitarbeitertabelle den neuesten Eintrag von James zum 1. Januar 2012 erhalten möchte, würde ich einen Eintrag mit der ID = 1 erhalten.

Wenn ich die neueste Aufzeichnung von James als am 1. Mai 2012 erhalten möchte, würde ich Aufzeichnung mit Identifikation = 5 erhalten

Wenn ich die neueste Aufzeichnung von James als am 1. August 2012 erhalten möchte, würde ich Aufzeichnung mit Identifikation = 3 erhalten,

Wenn ich die neueste Aufzeichnung von James als am 1. September 2012 erhalten möchte, würde ich Aufzeichnung mit Identifikation = 6 erhalten

Die folgende Abfrage gibt mir die neuesten Aufzeichnungen

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

Aber wie bekomme ich dann die anderen Spalten wie Vorname, Region usw.

Wenn ich sie in Select-Klausel oder Group-by-Klausel setze, erhalte ich nicht nur den neuesten Datensatz, sondern auch die anderen Datensätze.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage