Ich habe die folgende Tabelle über Zwischenschritte einer Fahrten, die ich sammeln möchte, um eine Zeile pro Person und Tag zu erhalten. Die Zwischenschritte können beinhalten, dass der Passagier verschiedene Tore an einer Station verlässt und eingibt, die immer nacheinander folgen wird.SQL - Aggregieren von Zeilen von Daten
In der folgenden Tabelle wird der Passagier 1234 an der Station 5598 zur Zeit 1071 und dann an der Station 796 zur Zeit 1073 (die Zeiten sind mit Zahlenwerten codiert) verlassen. Sie verlassen dann an der Station 635 zur Zeit 1086, gefolgt von einer Eingabe an der Station 5148 zur Zeit 1088. Dieser spezielle Passagier hat zwei Zwischenbeine auf seiner Reise. Für Passagier 5678 haben sie nur ein Intermediat-Bein.
Die Tabelle ist wie folgt:
ID day station time type
1234 133 5598 1071 exit
1234 133 796 1073 entry
1234 133 635 1086 exit
1234 133 5148 1088 entry
5678 133 8909 1305 exit
5678 133 5158 1306 entry
und ich möchte es so aussehen bekommen:
ID day stage1_exittime stage1_exitstation stage2_entrytime stage2_entrystation stage2_exittime stage2_exitstation stage3_entrytime stage3_entrystation
1234 133 1071 5598 1073 796 1086 635 1088 5148
5678 133 1305 8909 1306 5158 0 0 0 0
ich FIRST_VALUE versucht haben, über und partitionieren durch, kann aber nicht bekommen es funktioniert. Der Schlüssel ist, dass ich sicherstellen muss, dass die Fahrten mit nur 1 Zwischenstrecke in Stufe 2_exit und Stufe 3 in der obigen Tabelle nicht belegt sind.
Es sollte beachtet werden, dass der Passagier auf seiner Fahrt bis zu 5 Zwischenbeine haben kann (nicht 3, wie das Beispiel zeigt).
Was passiert, wenn eine Person an einem bestimmten Tag drei Zwischenbeine hat? Oder vier? Sind Sie sicher, dass es sicher ist, die Anzahl der Beine zu begrenzen, die Sie unterbringen können? –
In der Theorie sollte es 3 Zwischenbeine sein, aber vielleicht sollte ich mehr Beine berücksichtigen (es sollte nur ein Maximum von 5 sein) – JassiL