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.