Differenz aus 2 aufeinanderfolgenden Datensätzen berechnen

01/04/2011 - 09:04 von Andreas Gauer | Report spam
Hallo NG,

ich habe folgendes Problem, bei dem ich einfach nicht weiterkommen.

Ich habe eine Tabelle mit Füllstànden mit folgenden Daten:

ID / Timestamp / Peilung(Füllstand)

jetzt möchte ich den Verbrauch immer zwischen 2 aufeinanderfolgenden
Datensàtzen berechnen. Habe das ganze schon im Internet gesucht und es
schon mal mit folgender Abfrage versucht:

SELECT ZW.ID, ZW.Timestamp, ZW.Peilung, [Peilung]-(SELECT TOP 1
Peilung
FROM tblPeilung
WHERE
ID = ZW.ID AND
Timestamp < ZW.Timestamp
ORDER BY Timestamp DESC) AS Diff
FROM tblPeilung AS ZW
ORDER BY ZW.ID, ZW.Timestamp;

aber leider funktioniert das nicht (Fehlermeldung gibt es aber auch
keine)

Für Hilfe wàhre ich sehr dankbar

Viele Grüße
Andreas

PS: Win7 / Access2010 sollte aber auch unter Access 2007 lauffàhig
sein
 

Lesen sie die antworten

#1 Karl Donaubauer
01/04/2011 - 10:28 | Warnen spam
Andreas Gauer wrote:
...
Ich habe eine Tabelle mit Füllstànden mit folgenden Daten:

ID / Timestamp / Peilung(Füllstand)

jetzt möchte ich den Verbrauch immer zwischen 2 aufeinanderfolgenden
Datensàtzen berechnen. Habe das ganze schon im Internet gesucht und es
schon mal mit folgender Abfrage versucht:

SELECT ZW.ID, ZW.Timestamp, ZW.Peilung, [Peilung]-(SELECT TOP 1
Peilung
FROM tblPeilung
WHERE
ID = ZW.ID AND
Timestamp < ZW.Timestamp
ORDER BY Timestamp DESC) AS Diff
FROM tblPeilung AS ZW
ORDER BY ZW.ID, ZW.Timestamp;

aber leider funktioniert das nicht (Fehlermeldung gibt es aber auch
keine)
...



Es fehlen die Datentypen der Felder. Ich gehe der Einfachheit halber
mal von Timestamp als Zahlfeld aus. Falls es Datum/Uhrzeit ist, dann s.
http://www.donkarl.com?FAQ6.8.

Die andere Frage ist, ob ID ein eindeutiges Feld, also PK oder eindeutiger
Index, ist oder nicht. Ich gehe mal von Ja aus, obwohl dein SQL-Text da
oben nicht danach aussieht, aber sonst wird der Ausdruck so lange. ;-)

Öffne also die Abfrage in Entwurfsansicht und probiere das als Ausdruck
für ein neues berechnetes Feld (1 Zeile):

Peilung-nz(DomWert("Peilung";"ZW";"ID=" & nz(DomMax("ID";"ZW";"Timestamp=" &
Timestamp & " And ID<" & ID);0));0)

Servus
Karl
*********
Access-FAQ: http://www.donkarl.com +
3. .NET-Entwickler-Konferenz, 7./.8.5. Nürnberg, 21./22.5. Hannover

Ähnliche fragen