Abfrage mit Berechnungen durchführen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Abfrage mit Berechnungen durchführen

Re: Abfrage mit Berechnungen durchführen

von Barlee » Do, 18.12.2008 23:05

Hallo uli38,

eine Schleife mit Base geht meines Wissens nicht.
Zu Deiner Aufgabenstellung würde ich folgende Lösung verfolgen:
1) Hinzufügen einer laufenden Nummer für jedes Ablesedatum einer ZählerID und Speichern der Abfrage als View (rechte Maustaste auf die Abfrage >> "als Ansicht erstellen")
2) Abfragen des Views. Neben dem aktuellen Zählerstand lässt man sich nun den Stand vom letzten Ablesedatum des Zählers anzeigen, indem man anhand der laufenden Nummer den Datensatz mit dem letzten Ablesedatum für den Zähler sucht
3) Letztendlich bildet man die Differenz zwischen dem aktuellen Zählerstand und dem daneben gelisteten Stand des letzten Ablesens und erhält somit den Verbrauch

Beispiel:
die Ausgangstabelle "Tab_Zähler"
Tab_Zähler.jpg
Tab_Zähler.jpg (13.59 KiB) 801 mal betrachtet
Aus folgender Abfrage wird ein View "Tab_Zähler_V" erstellt

Code: Alles auswählen

SELECT 
( SELECT COUNT( "Wert" ) FROM "Tab_Zähler" AS "x" WHERE "x"."Ablesedatum" >= "Tab_Zähler"."Ablesedatum" AND "x"."Zähler" = "Tab_Zähler"."Zähler" ) AS "lfd_NR", 
"Zähler", 
"Wert", 
"Ablesedatum" 
FROM 
"Tab_Zähler"
 

...jetzt wird der View abgefragt

Code: Alles auswählen

SELECT 
"lfd_NR", 
"Zähler", 
"Ablesedatum", 
"Wert" as "Zählerstand", 
( SELECT "Wert" FROM "Tab_Zähler_V" AS "x" WHERE "x"."lfd_NR" = "Tab_Zähler_V"."lfd_NR" + 1 AND "x"."Zähler" = "Tab_Zähler_V"."Zähler" ) AS "letzter_Zählerstand",
"Wert" - ( SELECT "Wert" FROM "Tab_Zähler_V" AS "x" WHERE "x"."lfd_NR" = "Tab_Zähler_V"."lfd_NR" + 1 AND "x"."Zähler" = "Tab_Zähler_V"."Zähler" ) AS "Verbrauch"
FROM 
"Tab_Zähler_V"
order by "Zähler", "Ablesedatum" desc
mit folgendem Ergebnis:
Tab_Zähler_Ergebnis.jpg
Tab_Zähler_Ergebnis.jpg (19.77 KiB) 797 mal betrachtet
Der Vorteil ist, dass Du den Verbrauch fortlaufend auswerten kannst und nicht immer das jeweilige Ablesedatum als Parameter angeben musst.

Gruß Barlee

Abfrage mit Berechnungen durchführen

von uli38 » Mi, 17.12.2008 16:59

Hallo.
Ich habe eine Tabelle, in der Zählerstände erfasst werden. Mittels einer Abfrage soll soll pro Zähler an einem Ablesedatum der Verbrauch berechnet werden.
Für einen Datensatz bekomme ich das hin. Nur leider kann ich immer nur einen Zähler auswerten:

Code: Alles auswählen

SELECT "Zähler-ID", "Zähler-Nummer", "Ablesedatum", "Zählerstand", "Zählerstand" - ( SELECT "Zählerstand" FROM "Elektro-Zählerstände" AS "Elektro-Zählerstände" WHERE "Zähler-ID" = '1' AND "Ablesedatum" = {D '2008-03-29' } ) AS "Verbrauch" FROM "Elektro-Zählerstände" AS "Elektro-Zählerstände" WHERE "Ablesedatum" = {D '2008-12-13' }
Hat jemand eine Idee, wie ich hier eine Schleife einbauen kann?

Schon jetzt vielen Dank!
Gruß
Uli

Nach oben