Ich habe eine Oracle-Tabelle mit "Benutzern" darin, und eine Tabelle mit "Ereignissen" bezogen auf Benutzer, Datum-gestempelt, wann jedes Ereignis stattfand. Ich würde gerne eine einfache Tabelle erstellen, die jeden Benutzer und das letzte Ereignis zeigt, das stattgefunden hat, aber ich kann die verschachtelte Abfrage- oder Aggregationsfunktion dafür nicht richtig ausarbeiten, da ich mich nicht in der Spalte zusammenfasse Ich will. Wenn ich einfach MAX(event_date)
wollte, wäre das ziemlich einfach, aber ich möchte etwas wie event_status where MAX(event_date)
. Ich bin mir sicher, dass es möglich ist, auf eine Prozedur zu verzichten, aber ich kann es nicht ganz ausrechnen. Jeder hat eine Lösung?Oracle - Join Tabellen mit aggregierten Funktion?
user_id user_name
1 bob
2 sally
3 fred
event_id user_id event_date event_status
1 1 3/1/15 hired
2 1 3/2/15 active
3 3 4/1/15 hired
4 3 4/3/15 on leave
5 2 3/3/15 hired
6 2 4/1/15 on leave
7 2 5/1/15 active
Wunschergebnis:
user_name current_status
bob active
sally active
fred on leave
Danke, das hat mich über die Beule gebracht. Oracle ist etwas peinlicher bei der Verwendung von "limit" - ich habe es schließlich geschafft, indem ich ORDER BY von ROWCOUNT = 1 wie folgt trennte: wähle u. *, (wähle * aus (wähle e.status aus Ereignissen e wo e.user_id u.user_id = Sortieren nach e.event_date desc ) wobei rowcount = 1) als Most_RecentStatus von den Benutzern u; – user1071914