Verwenden der inneren Verknüpfung, um das Intervall zwischen bestimmten Datensätzen und zugehörigen Ereignissen in einer Tabelle zu bestimmen

Ich habe eine einfache Tabelle, mit der Ereignisse für bestimmte Besuche aufgezeichnet werden:

<code>Describe Histories;
    +------------------+
    | Field            |
    +------------------+
    | HistoryId        |
    | VisitId          |
    | Location         |
    | Event            |
    | EventTime        |
    +------------------+
</code>

Einzelpersonen sind mit Visits (VisitId) verknüpft. Für jeden Besuch kann eine Person mehrere Verlaufsdatensätze haben. Ereignisse können Aufnahme, Übertragung oder Entlassung sein.

Ich versuche, eine Abfrage zu schreiben, um die Dauer an jedem Standort für jede Person zu berechnen. Beachten Sie, dass sie einen Standort für jeden Besuch mehrmals besuchen können. Eine Person betritt einen Ort mit einem Aufnahme- oder Transferereignis und verlässt ihn mit einer Entlastung oder einem Transfer.

Wenn eine Person den Standort 'A' eingibt, wird in ihrem Aufnahme- oder Überweisungsdatensatz der Standort 'A' aufgeführt. Wenn sie jedoch den Transfer auslagert (oder entlädt), wird ein anderer Standort aufgelistet, z. B. 'B'.

Ich muss daher das Intervall zwischen dem Transfer an Ort 'A' und dem anschließenden (zeitlichen) Transfer an Ort 'B' ermitteln. Standortinterne Übertragungen werden nicht ausgewertet.

Ich verstehe, dass die Lösung wahrscheinlich auf einem INNER JOIN basieren wird, kann jedoch nicht nachvollziehen, wie für den Transfer "out" -Datensatz ausgewählt werden soll, der dem letzten Transfer "in" entspricht.

Ich denke, das ist einigermaßen komplex - ich hoffe, dass ich in meiner Erklärung klar genug war.

Jede Anleitung sehr geschätzt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage