-
SQL mit Teilergebnis
Hallo zusammen,
ich habe ein SQL mit folgenden Spalten
Firma |
Lieferschein |
Datum |
Kunden-Nr |
Name |
Straße |
Ort |
Artikel |
Bezeichnung |
P-Fakt |
Anz.Pal |
Nun möchte ich diese Ausgabe nach Datum und Lieferschein sortieren und die Spalte "Anz. Pal" darauf summieren. D.h. Anz. Pal pro Lieferschein und Tag.
Ich habe mir die Funktion "ROLLUP" mal angeschaut, aber diese bildet mir ja nach jeder Spalte eine Summe
Bei einem QUERY kann man ja ganz unabhängig sich die Summen bilden lassen; welche Möglichkeiten habe mit mit "nacktem" SQL?
Danke an alle Helfenden.
-
Ganz klassisch geht dies mit Aggregatfunktionen und Group by, modern gibt es da noch Cube-Funktionen.
Einzel-Summen lassen sich ggf. per scalarem Subselect ergänzen:
select Firma,Lieferschein, Datum, sum(Anz.pal)
from MyTable
Group by Firma, Lieferschein, Datum
-
...
order by firma, lieferschein,datum nicht vergessen
D*B
-
...
das Problem ist - welches mich doch sehr belastet - ich kann bei SQL ja nicht mehr Detailfelder ausgeben als ich in der GROUP Anweisung habe, also nach euren Vorschlägen würden die Detaiinfos "Straße" "Ort" etc. im Result ja wegfallen...
So sollte das ResultSet aussehen, leider bekomme ich das nur hier per Hand hin
Firma
01
01 |
Lieferschein
4711
4711
4712
4712 |
Datum
23.01.2015
23.01.2015
23.01.2015 |
Kunden-Nr
4711
4711 |
Name
TEST
TEST |
Straße
Musterweg
Musterweg |
Ort
Musterdorf
Musterdorf |
Artikel
4711
4712 |
Bezeichnung
Tst-Art
Tst-Art1 |
P-Fakt
64
32 |
Anz.Pal
15
15
13
13
28 |
-
... das ist weder ein "ResultSet" noch entspricht das einer sinnvollen Sortierung!
ansonsten kann man natürlich zusätzliche Felder in die Gruppierung aufnehmen und sie daurch in der Feldliste zugänglich machen.
...
Group by Firma, Lieferschein, Datum, Name, Straße, Ort
-
Du kannst die Felder in Group By aufnehmen (wie Dieter schon angibt), du kannst alternativ auch Aggregatfunktion MIN(Ort) nehmen, wenn der Ort für die Gruppe identisch ist.
Benötigst du allerdings sowohl die Einzelzeilen als auch die Summenzeilen musst du dich dochnäher mit der Cube-Anweisung beschäftigen.
-
Danke Furchau,
das war der Baum den ich im Wald nicht gesehen habe... Einfach ein paar Pseudo-Aggregatsfunktonen, dann sollte es in der Tat hinhauen.
I try it!
-
Hallo zusammen,
ich habe mich noch ein wenig weiter beschäftigt und bin zu der Lösung gekommen, die ich wollte
Das verwendete Statement sieht wie folgt aus.
In der CTE bilde ich mir die Summen auf die Felder die ich brauche. Die CTE ist die Basis und schon so aufgebaut, wie sie sollte: d.h. es gibt Summen dank des ROLLING-Befehl der Menge und Paletten auf alle Gruppenfelder aus: Artikel(ist eh schon atomar) auf den Lieferschein und auf das Datum und zuletzt auf die Firma.
Anchließend wird die CTE wieder mit der Lieferscheindatei gejoint (um weitere Informationen zum Lieferschein zu ermitteln) und auf andere Dateien wie Kundenstamm Artikelstamm, Kundenstamm etc.
Anhand der GROUPING-Indikatoren gehe ich hin und gebe anstelle der Artikelbezeichung die Summenbezeichung aus.
Läuft gut und ist asd was ich haben wollte..
Code:
WITH Summe AS(
SELECT
FIRM, DATUM, LIEFSCHNR, ARTNR, SUM(MENG)
SUM(ANZP),
GROUPING(DATUM) AS SUGES, GROUPING(LIEFSCHNR) AS SUDAT, GROUPiNG(ARTNR) AS SULS
FROM
LSNRDATEI
WHERE
FIRM='AA' AND AUFART='XX'
GROUP BY FIRM, DATUM, LIEFSCHNR, ARTIKEL
with ROLLUP
ORDER BY FIRM, DATUM, LIEFSCHNR, ARTIKEL)
SELECT A.FIRM, B.AUFTRAGNR, A.LIEFSCHNR, C.CCG, B.KUNDE, D.NAME, D.STRASSE, D.PLZ, D.ORT, A.DATUM, A.ARTNR,
CASE
WHEN A.SUDAT ='1' THEN 'Summe Datum : '
WHEN A.SULS ='1' THEN 'Summe Lieferschein:'
ELSE
C.ARTIKELBEZ
END,
A.MENGE,
C.PALF, A.ANZP, A.SUDAT, A.SULS, A.SUGES
FROM Summe A
LEFT JOIN LSNRDATEI B ON FIRM=FIRMA AND LIEFSCHNR=LSNR
LEFT JOIN ARTIKELDATEI C On FIRM =AFIRMA and ARTNR=AARTNR
LEFT JOIN KUNDENSTAMM D ON FIRM=KFIRMA AND KUNDE=KKUNDE
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks