View Full Version : Kumulieren mit SQL400
Stephan Paepke
13-03-02, 10:56
Hallo,
gibt es einen SQL400-Befehl, mit dem ich Werte kumulieren kann?
Vielen Dank und viele Grüße, Stephan
Hallo Stepahn,
gibt es z.B.:
SELECT sum(BETRAG) as Summe_Betrag
FROM Lib/File
Viel Erfolg Jens
Stephan Paepke
13-03-02, 12:49
Hallo Jens,
danke für die prompte Antwort. Ich dachte allerdings an Folgendes:
Kundennumer Umsatz kumulierter Umsatz
1212123 50 50
1212124 50 100
1212125 25 125
usw.
Viele Grüße, Stephan
na dann,
select kdnr, sum(Umsatz) as Summe
from ...
group by kdnr
Stephan Paepke
13-03-02, 14:24
Vielen Dank,
das wäre die normale Aufsummierung des Umsatzes aber nicht die kumulierte (im Beispiel die dritte Spalte).
Viele Grüße, Stephan
Eine "Fortschrittszahl" ist mittels SQL leider nicht möglich.
Man schaue sich die Reihenfolge eines SELECT's mal genau an:
1. Feldauswahl
2. Dateiauswahl
3. Where-Bedingung
4. ggf. GROUP und HAVING
5. ORDER BY !!
Da das ORDER BY erst die letzt Aktion ist, nämlich die Sortierung des "Ergebnisses", kann eine Fortschrittszahl in der Feldauswahl nicht korrekt ermittelt werden.
Es wäre auch zu schön, aber die Programmierer werden genau für solche Wünsche ja doch noch gebraucht.
Sven Schneider
18-03-02, 19:07
Ab OS/400 V5R1 kannst du ein Select-Statement in der Feldauswahl angeben :
select
a.kdnr,
sum(a.Umsatz) as Umsatz,
min(select sum(b.Umsatz) from b.datei where b.kdnr <= a.kdnr) as KumUmsatz
from a.datei
group by a.kdnr
order by a.kdnr
Ich weis allerdings nicht ob das auch für die Funktion min/max gilt.
Da ich nur V4R5 habe kann ich es also nicht ausprobieren.
Sven
[Dieser Beitrag wurde von Sven Schneider am 18. März 2002 editiert.]
Stephan Paepke
19-03-02, 08:33
Hallo Sven,
der Tip war sehr gut. Es ergab sich auch etwas für V4R4:
select
a.kundennum, a.ums as umsatz,
sum(b.ums) as kum from kunden b, kunden a
where b.kundennum <= a.kundennum
group by a.kundennum, a.ums
order by a.kundennum
Die Tabelle muss hierzu unique Datensätze besitzen.
Viele Grüße, Stephan