Eine etwas allgemeinere Lösung, dafür aber u. U. weniger performante Lösung (ohne PL/SQL) wäre folgender SELECT:
SELECT alt.datum AS beginn,
neu.datum AS ende,
neu.stand - alt.stand AS verbrauch,
(neu.stand - alt.stand)/(neu.datum - alt.datum) AS tagesverbrauch
FROM my\_table alt, my\_table neu
WHERE alt.datum=
(SELECT MAX(datum)
FROM my\_table sub
WHERE sub.datum
Außerdem solltest Du nicht vergessen, die Tabelle zu indizieren.
Noch allgemeiner kannst Du Daten mit folgendem View abfragen:
CREATE VIEW my\_view AS
SELECT alt.datum AS beginn,
neu.datum AS ende,
neu.stand - alt.stand AS verbrauch
FROM my\_table alt, my\_table neu
WHERE neu.datum \> alt.datum;
den Du dann z.B. mittels
SELECT \*
FROM my\_view
WHERE to\_char(beginn,'DD.MM.YYYY')='20.12.2001' AND
to\_char(ende,'DD.MM.YYYY')='03.01.2001';
aufrufst. Dadurch kannst Du dann für beliebige Zeiträume (nicht nur zwischen jeweils zwei Ablesungen) den Verbrauch ermitteln.
Das ganze ließe sich jetzt natürlich noch (fast) ewig fortsetzen.
Gruß,
Martin