Ich glaube, das ist die Suchanfrage, nach der Sie suchen:
%Vor%Stellen Sie sicher, dass die Zeitspalten denselben Datumsteil haben, weil der Teil t2.time - t1.time ansonsten nicht funktioniert.
BEARBEITEN : Danke für das Akzeptieren, aber Bens Antwort ist besser. Es verwendet Oracle analytische Funktionen und wird viel besser funktionieren.
Sie müssen nur einen einzigen kartesischen Join verwenden, um Ihr Problem zu lösen, im Gegensatz zu den anderen Lösungen, die multiple verwenden. Ich nehme an, die Zeit wird als VARCHAR2 gespeichert. Wenn es als Datum gespeichert ist, können Sie die TO_DATE-Funktionen entfernen. Wenn es als Datum gespeichert wird (ich würde dies sehr empfehlen), müssen Sie die Datumsabschnitte entfernen
Ich habe es leicht ausschweifend gemacht, also ist es offensichtlich, was vor sich geht.
%Vor% Im Grunde berechnet dies die absolute Differenz zwischen jeder Zeit in T1 und T2 und wählt dann die kleinste Differenz in T2 ID
; Rückgabe der Daten von T1.
Hier ist es im SQL Fiddle Format .
Das weniger schöne (aber kürzere) Format ist:
%Vor%Versuchen Sie diese Abfrage ein wenig lang, ich werde versuchen, es zu optimieren
%Vor%Tags und Links sql oracle date-arithmetic