Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: SQL- Summe je Zeile bilden - kummuliert

  Alt 22. Jun 2019, 21:49
Das ist nicht ganz trivial.
Was ist ABSComponent für eine Datenbank?

- Falls kein Wert vorhanden ist, soll in dieser 4. Spalte der Wert von der vorherigen Zeile eingetragen werden.
- Fall ein Wert in der nächsten Zeile ist, so sollen diese Werte addiert werden und zum vorherigen Wert addiert werden,
der dann in der 4. Spalte steht.
In Kurz und unter Berücksichtigung des Bildes:
Summiere 3 Spalten und addiere es auf die Summe der vorigen Zeile.
Der zweite Teil dieser Anforderung nennt sich auch "running total". Mit dem ersten Teil gibt es vermutlich keine Probleme.

"..vorige Zeile.."
Mit SQL kann man nicht ohne weiteres auf die vorige Zeile zugreifen. SQL arbeitet Mengen basiert und kennt keine Reihenfolge.
Es gibt Erweiterungen, die solche "Spreadsheet" Funktionen bieten, aber das kommt auf das Produkt an.

Man kann die vorige Zeile rausfinden, mit SQL, dafür braucht man aber eine eindeutige ID je Zeile und ein Kriterium, das die "Vorigkeit" definiert.

P.S.:
Wenn es sich um Absolute Database handelt, diese DB kann das wahrscheinlich nicht.
Wenn es (immer) nur um 365 Datensätze geht, braucht man es nicht mit SQL zu machen, sondern kann es im Programm berechen (auch wenn SQL bequemer wäre)
Wenn es um mehr geht und diese Anforderung oben nur der Anfang ist, sollte man nach einer anderen DB schauen. Z.B. Firebird, die lässt sich auch embedded nutzen und kann sowas wie Du oben nachgefragt hast per explizitem SQL, bequem und schnell. (Ein Sortierkriterium, also eine weitere Spalte, die solch ein Kriterium liefert, braucht man da aber auch.)
Gruß, Jo

Geändert von jobo (22. Jun 2019 um 22:01 Uhr)
  Mit Zitat antworten Zitat