Ich brauche eine Abfrage, um verschachtelte Daten von 'Start' und 'Ende' Zeiten in eine saubere Ausgabe zu paaren, aber meine Haupthürde ist mit, wie die Daten in einem verschachtelten Format innerhalb der gespeichert werden ProcessTimer Tabelle.Abfrage zu paarweise verschachtelten Anfangs- und Endzeiten
Eingang Tabelle 1
Ich habe eine Tabelle ProcessTimer mit drei Spalten genannt.
- ProcessTimerId INT (PRIMARY KEY)
- ProcessTimerDatetime DATETIME-
- ProcessTimerAction VARCHAR (5)
- ProcessId INT (FOREIGN KEY)
'ProcessTimerAction 'wird immer nur auf den Wert' START 'oder' STOP 'gesetzt, der an die Spalte' ProcessTimerDatetime 'anschließt, da' ProcessTimerDatetime 'einen DATETIME-Wert speichert, wenn ein Prozess gestartet oder gestoppt wurde.
Jeder Prozess wird über einen ProcessId identifiziert, und das Link zu einer anderen Tabelle genannt Prozess, die einige Details über jeden Prozess hat.
Eingangstisch 2
Die Prozess Tabelle eingerichtet ist, wie folgt:
- ProcessId INT (PRIMARY KEY)
- Process VARCHAR (255)
- ProcessOwner VARCHAR (255)
Logischer, eine Startaktion des Prozesses sollte immer von einer STOP-Aktion folgen, und die Anzeige in Paaren jedoch Fehler in den Daten bedeuten, dass es nicht immer eine STOP-Aktion für jeden START Aktion . In diesen Fällen gibt es nichts, was ich tun kann, aber eine NULL für den fehlenden STOP-Eintrag angezeigt
Wunsch Ausgang
Ich mag die Daten in Raster mit den folgenden Überschriften darstellen.
- ProcessOwner
- Process
- PROCESS
- ProcessEndTime
Hat jemand erreicht so etwas wie dies vor?
Ich bin mir nicht sicher, wie ich damit anfangen soll, die Abfrage zu erstellen, die ich brauche.
Beispiel Daten
ProcessTimer Tabelle
ProcessTimerId,ProcessTimerDatetime,ProcessTimerAction,ProcessId
1,1/1/2017 08:00:34,START,883
2,1/1/2017 08:03:76,STOP,883
3,1/1/2017 08:03:77,START,445
4,1/1/2017 08:03:79,START,636
5,1/1/2017 08:05:77,STOP,445
6,1/1/2017 08:07:34,START,445
7,1/1/2017 08:09:23,START,445
8,1/1/2017 08:12:61,STOP,636
9,1/1/2017 08:14:65,STOP,445
Prozess Tabelle
ProcessId,ProcessName,ProcessOwner
445,CTC hourlies,Sarah Parkes
636,Garage import,John Dean
883,DF task,Kate Duke
Sprichst du auf einer Zeile, um die Start- und Stoppzeit zu bekommen? – Snowlockk
Wenn ja In einer Zeile_Nummer Partitioniert von ProcessId. Join auf sich selbst mit dem RID = RID + 1 UND ProcessId = ProcessId – Snowlockk