Anmelden

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

jkuetema
13-03-02, 12:30
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

rmittag
13-03-02, 14:20
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

Fuerchau
18-03-02, 09:21
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&auml;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