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.

Erklären Sie das bitte? "Wenn ich will Holen Sie sich die aktuelle Platte von james als am 1. Aug 2012, ich den Datensatz mit der id = 3" warum nicht 2?
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

Schreibe einen Kommentar