Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Differenz zwischen zwei Zeilen der selben Spalte

Begonnen von burns_1987, Mai 21, 2018, 20:27:22

⏪ vorheriges - nächstes ⏩

DF6GL

Hallo,

jaa, man sollte richtig lesen:


das Komma (rot) bei

) AS Zaehlerstand_diff,
FROM   TabVerbrStrom AS d0


ist zu entfernen

papanetti

Hallo,

super  :), jetzt funktioniert es und ich kann die anderen Abfragen auch so anpassen. Vielen Dank.

MfG Henry
Wenn man schon keine Ahnung hat - dann aber richtig!

papanetti

Sorry,
ich habe mich zu früh gefreut. Für die Tabelle TabVerbrKalt konnte ich auch eine funktionierende Abfrage erstellen. Beim Versuch, das auch für die Tabelle TabVerbrWarm zu machen, kommt die Fehlermeldung: Höchstens ein Datensatz kann von dieser Unterabfrage zurückgegeben werden.
Beide Tabellen habe identische Struktur.
Für meinen beschränkten Horizont nicht nachvollziehbar.
MfG Henry
Wenn man schon keine Ahnung hat - dann aber richtig!

DF6GL

Hallo,

dann zeigt mal den SQL-String der Abfrage, die nicht geht...

In der Annahme, dass der Zählerstand analog mit dem Datum  wächst, könnte dies funktionieren:

SELECT Max(d1.Zaehlerstand )   
                       FROM     TabVerbrStrom AS d1
                       WHERE  d1.Datum < d0.Datum
                       

papanetti

Hallo,
für Tabelle "TabVerbrWarm" ist folgender Code:SELECT d0.Datum, d0.Zaehlerstand, d0.Zaehlerstand-(SELECT Top 1 d1.Zaehlerstand                             FROM     TabVerbrWarm AS d1                        WHERE  d1.Datum < d0.Datum                        ORDER  BY d1.Datum DESC                                              ) AS Verbrauch
FROM TabVerbrWarm AS d0
ORDER BY 1, 2;
.
Für Tabelle "TabVerbrKalt" ist dieser Code funktionierend: SELECT d0.Datum, d0.Zaehlerstand, d0.Zaehlerstand-(SELECT Top 1 d1.Zaehlerstand                             FROM     TabVerbrKalt AS d1                        WHERE  d1.Datum < d0.Datum                        ORDER  BY d1.Datum DESC                                              ) AS Verbrauch
FROM TabVerbrKalt AS d0
ORDER BY 1, 2;
.
Ich bin ratlos.
MfG Henry
Wenn man schon keine Ahnung hat - dann aber richtig!

DF6GL

Hallo,

es gibt also 3 Tabellen, die gleichartig aufgebaut sind?

Sind sie das wirklich? (--> prüfen!,  auch Datentypen)

Das allerdings verstößt gegen Normalisierungregeln (was hier jedoch nicht das ursprüngliche Thema ist).

Was genau funktioniert denn nicht? Gibt es irgendwelche Fehlerhinweise? Oder stimmen nur die berechneten Wert nicht?

Bitte mal ein paar (authetische) Datenbeispiele.


papanetti

Hallo,

vielen Dank für die Bemühungen. Ich glaube, ich werde mich erst einmal hinsetzen und mir die Regeln der Normalisierung und die Grundlagen eines sauberen Datanbankaufbaus zu Gemüte führen. Danach werde ich dann nochmals versuchen, eine Datenbank für mich zu Hause aufzubauen ( Verbräuche für Strom, Wasser und Heizung ), welche dann etwas komfortabler zu händeln ist als meine bisherigen Excel-Tabellen.
Ich bitte um Entschuldigung, dass ich Deine Zeit in Anspruch genommen habe, aber da ich nun selbst genug Zeit habe, das Leben zu genießen, kann ich mir auch noch etwas Wissen aneignen.
Dennoch kann es sicher sein, dass ich mich hier im Forum zurückmelden werde.

MfG Henry
Wenn man schon keine Ahnung hat - dann aber richtig!

Jennifer

Also wenn man mal von dem Fehler in der Normalisierung absieht, würde ich eine Abfrage machen, die immer bei Datum "x.y" Den Wert für "x.y-1" holt und daraus die Differenz berechnet... Aber natürlich drauf achten, dass wenn Y = 1 Wert 0 geholt wird. Oder habe ich das 01.01 falsch verstand und da steht doch noch eine Jahreszahl dahinter, dann wäre natürlich für Datum "x.y.z" Wenn Y= 1 dann "x.1.z-1" sonst "x.y-1.z"
Dann bindest du diese Abfrage in deine mit ein und hast eine Spalte für die Differenzen.