Wie erhalten Sie die neuesten employee-Datensatz in oracle?
Ich habe eine Mitarbeiter-Tabelle mit Spalten wie emp_id, firstname, lastname, region_id, status und effective_date.
Employee-Tabelle können mehrere Einträge für denselben Mitarbeiter mit unterschiedlichen effektiven Termine und Status.
Mitarbeiter kann zwei Zustände 'Leaver' und 'Tischler'.
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
Mit den oben genannten Daten in der Mitarbeiter-Tabelle, Wenn ich will Holen Sie sich die aktuelle Platte von james als am 1 Jan 2012, ich den Datensatz mit der id = 1,
Wenn ich will Holen Sie sich die aktuelle Platte von james, wie am 1. Mai 2012, ich den Datensatz mit der id = 5
Wenn ich will Holen Sie sich die aktuelle Platte von james als am 1. Aug 2012, ich den Datensatz mit der id = 3,
Wenn ich will Holen Sie sich die aktuelle Platte von james als am 1. Sep 2012, ich den Datensatz mit der id = 6
Folgende Abfrage korrekt gibt mir die aktuelle Platte
SELECT
emp_id,
MAX(effective_date) AS latest_effective_date
FROM
EMPLOYEE
GROUP BY
emp_id
Aber dann, wie bekomme ich die anderen Spalten wie Vorname , region usw.
Wenn ich Sie in der select-Klausel oder group by-Klausel, die ich nicht bekommen nur den neuesten Datensatz, sondern den anderen Datensätzen als gut.
Sicher, James ist der übergang von der region England in die USA am 1 Aug 2012. Also, Wenn ich brauche, um zu sehen, wo ist James als am 1. Aug 2012, ist es wieder die USA und nicht UK. Daher der Datensatz mit der id = 3 und nicht die id = 2.
auch dann ist Ihre ganze Logik überprüft werden, Ihre eigene Abfrage "richtig letzten Platte" nur durch Zufall. Ich bin aus diesem Thema jetzt zu, Sie haben analytische Probleme zu lösen.
InformationsquelleAutor ashishjmeshram | 2012-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oben erhalten Sie einen Datensatz mit dem maximalen effektiven__Datum für jeden unterschiedliche emp_id.
Ihre zweite Forderung der Rückkehr Datensatz für den angegebenen Termin sollte eingehalten werden, die von dieser Abfrage:
("status " ASC" - kümmern "Joiner" - status, wenn es auch "Abgänge" für den gleichen Tag.)
InformationsquelleAutor arturro
Müssen Sie inner join der Abfrage, die Sie bereits haben, zurück zu Ihrem Employee-Tabelle zum einschränken der Datensätze:
Ich kann nicht deuten auf eine Verbesserung/Korrektur basierend auf diesem feedback. Warum ist es nicht funktioniert, tut Sie es nicht ausführen? Läuft es aber nicht mit den Ergebnissen, die Sie erwartet hatten?
InformationsquelleAutor GarethD
die Abfrage, die Sie eingegeben haben, nicht unbedingt Rückkehr Datensatz mit der id 3, 5, 6, wie Sie zuvor, weil in diesem Fall:
effective_date ist gleich für beide Zeilen und es würde wahrscheinlich Rückkehr Datensatz mit der id 2 und nicht 3.
versuchen Sie, Zeit, um die Tabelle oder das hinzufügen von Zeit, um Ihre effective_date Spalte, auf diese Weise werden Sie in der Lage sein zu Holen Sie sich die aktuellen Ergebnisse von einem Benutzer zu einem bestimmten Datum.
InformationsquelleAutor Euclides Mulémbwè
Versuchen, diese
InformationsquelleAutor Null IO
versuchen:
InformationsquelleAutor Euclides Mulémbwè