Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: CarmeloLabadie am Juli 26, 2021, 08:00:01

Titel: Differenz zweier aufeinanderfolgender Tabellenzeilen per SQL
Beitrag von: CarmeloLabadie am Juli 26, 2021, 08:00:01
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!
Titel: Re: Differenz zweier aufeinanderfolgender Tabellenzeilen per SQL
Beitrag von: ebs17 am Juli 26, 2021, 17:28:19
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