Differenz zweier aufeinanderfolgender Tabellenzeilen per SQL - Differenz zweier aufeinanderfolgender Tabellenzeilen per SQL
Nach oben
Version: (keine Angabe möglich)
Hallo!
Ich habe eine Tabelle mit Statusmeldungen eines Objektes - bestehend aus zwei Spalten: Datum/Zeit und Statusname:
10.8.2011 8:23:11 | status03
10.8.2011 17:31:31 | status07
12.8.2011 19:55:41 | status05
... usw.
Die Zeitangabe gibt an, wann der Übergang in den jeweiligen Status erfolgte. Das kann z.B. ein Container sein, der mit Hilfe eines daran befestigten SmartTags seinen Beladezustand meldet.
Nun möchte ich herauskriegen, wie lange das Objekt in dem jeweiligen Status war. Ich möchte also eine neue Tabelle haben, in der nicht der Zeitpunkt des Statusüberganges steht, sondern die Verweildauer in dem jeweiligen Status:
9:08:20 | status03
50:24:10 | status 07
... usw.
Ich müsste also die Differenz der Zeitangaben aus zwei aufeinanderfolgenden Tabellenzeilen bilden. In Excel wäre das ein Kinderspiel; in Access würde ich das mit ein paar Zeilen VBA-Code auch hinkriegen. Aber: Geht das auch mit SQL - also mit einer Tabellenerstellungsabfrage? Mir fällt dazu nichts Schlaues ein und ich würde mich über einen Lösungsvorschlag sehr freuen!
SELECT
Nz(
(
SELECT
MIN(X.Zeitstempel)
FROM
TabelleX AS X
WHERE
X.Zeitstempel > T.Zeitstempel
)
, NOW()) - T.Zeitstempel AS Differenz,
T.Status
FROM
TabelleX AS T