Ich muss den Zeitunterschied zwischen zwei Ereignissen erhalten, die als Zeilen in derselben Tabelle dargestellt werden. Unter anderem hat die Reihe die folgenden Felder:Subtrahiere zwei Daten mit passendem Feld und einen anderen spezifischen Feldwert in SQL Tabelle
JobNum
EventDate
Event
Das Event
Feld zu sehen verwendet wird, wenn das Ereignis der Beginn oder das Ende für diesen Job ist.
Ich brauche die Zeitunterschiede zwischen dem EventDate
Feld, wo JobNum
das gleiche ist. Da es mehrere Ereignisse für ein einzelnes JobNum
sein kann, ich muß auch angeben, dass JobNum
gleich ist und zu subtrahieren nur die Zeile, in EventDate= 'Starting'
aus der Reihe mit EventDate = 'Finished'
(Es wird nur immer ein Starting
und ein Finished
Ereignis pro JobNum
).
Das folgende ist so weit ich bekommen haben funktioniert, aber es ist nicht:
Select a.[AutoNumber], DATEDIFF(SECOND, (SELECT m.EventDate
FROM [myTable] m
WHERE m.Event = 'Starting' and a.JobNum= m.JobNum),
(SELECT m.EventDate
FROM myTable m
WHERE m.Event = 'Finished' and a.JobNum= m.JobNum)
)
From myTable a
Es läuft teilweise, sondern gibt dann den folgenden Fehler:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Ich habe auch einen Blick auf diese Frage aber konnte nicht herausfinden, wie man den Code ändert, um für meine Situation zu arbeiten. How to get difference between two rows for a column field?
Jede Hilfe würde sehr geschätzt werden.
ist es nur einen einzigen Datensatz von 'Starting' bestätigen und' Finished' pro JobNum? Sieht so aus, als ob deine Daten nicht funktionieren. – Squirrel