-
Mit einfachen SQL's scheitert man ggf. an der Sortierfolge, da spätestens auf der nächst höheren Ebene und am Schluss Gruppenschlüssel NULL sind und die werden nach vorne sortiert.
Um einen Order by kommt man da wohl nicht herum.
Hier das Handbuch-Beispiel:
Code:
The following query:
SELECT
SALES_DATE, SALES_PERSON,
SUM
(SALES) AS UNITS_SOLD,
GROUPING
(SALES_DATE) AS DATE_GROUP,
GROUPING
(SALES_PERSON) AS SALES_GROUP
FROM
SALES
GROUP BY CUBE
( SALES_DATE, SALES_PERSON)
ORDER BY
SALES_DATE, SALES_PERSON
Results in:
SALES_DATE SALES_PERSON UNITS_SOLD DATE_GROUP SALES_GROUP
---------- ------------ ---------- ---------- -----------
12/31/1995 GOUNOT 1 0 0
12/31/1995 LEE 6 0 0
12/31/1995 LUCCHESSI 1 0 0
12/31/1995 - 8 0 1
03/29/1996 GOUNOT 11 0 0
03/29/1996 LEE 12 0 0
03/29/1996 LUCCHESSI 4 0 0
03/29/1996 - 27 0 1
03/30/1996 GOUNOT 21 0 0
03/30/1996 LEE 21 0 0
03/30/1996 LUCCHESSI 4 0 0
03/30/1996 - 46 0 1
03/31/1996 GOUNOT 3 0 0
03/31/1996 LEE 27 0 0
03/31/1996 LUCCHESSI 1 0 0
03/31/1996 - 31 0 1
04/01/1996 GOUNOT 14 0 0
04/01/1996 LEE 25 0 0
04/01/1996 LUCCHESSI 4 0 0
04/01/1996 - 43 0 1
- GOUNOT 50 1 0
-
Hallo zusammen und vielen Dank für die vielen Antworten!
ich habe ich zwischenzeitlich noch weiter mit dem Thema auseinander gesetzt und meine Lösung in den GROUPING SETS gefunden.
Hier die Lösung umgesetzt auf meine o.g. Beispiel-Situation:
Code:
select ARTNR_TEIL1, ARTNR_TEIL2, ARTNR_TEIL3,
sum(ANZ_GROESSE_1), sum(ANZ_GROESSE_2), sum(ANZ_GROESSE_3),
sum(ANZ_GROESSE_4), sum(ANZ_GROESSE_5), sum(ANZ_GROESSE_6)
FROM tabelle
Group by Grouping Sets((ARTNR_TEIL1, ARTNR_TEIL2, ARTNR_TEIL3),
(ARTNR_TEIL1, ARTNR_TEIL2)
(ARTNR_TEIL1)
() );
Besten Dank allerseits!
-
Ich würde es mal mit ROLLUP probieren...
SELECT CASE WHEN (GROUPING(ARTNR_TEIL1) = 1) THEN 'Summe ART 1'
ELSE ISNULL(ARTNR_TEIL1, 'UNKNOWN')
END AS Art1,
CASE WHEN (GROUPING(ARTNR_TEIL2) = 1) THEN 'Summe ART 2'
ELSE ISNULL(ARTNR_TEIL2, 'UNKNOWN')
END AS Art2,
CASE WHEN (GROUPING(ARTNR_TEIL3) = 1) THEN 'Summe ART 3'
ELSE ISNULL(ARTNR_TEIL3, 'UNKNOWN')
END AS Art3,
SUM(ANZ_GROESSE_1) AS Sum1,
SUM(ANZ_GROESSE_2) AS Sum2,
SUM(ANZ_GROESSE_3) AS Sum3,
FROM TABLE
GROUP BY ARTNR_TEIL1, ARTNR_TEIL2, ARTNR_TEIL3 WITH ROLLUP
-
Group by Cube scheint mir das selbe Ergebnis zu bringen.
-
Das ist kein CUBE, da dieser alle möglichen Summen-Kombinationen bildet, sondern ein ROLLUP.
Mit Grouping Set geht das natürlich auch, ist aber etwas komplizierter.
Code:
Select ArtNr_Teil1, ArtNr_Teil2, ArtNr_Teil3,
sum(Anz_Groesse1),
sum(Anz_Groesse2),
sum(Anz_Groesse3),
sum(Anz_Groesse4),
sum(Anz_Groesse5),
sum(Anz_Groesse6)
From ArtTable
Group By Rollup(ArtNr_Teil1, ArtNr_Teil2, ArtNr_Teil3)
Order By ArtNr_Teil1, ArtNr_Teil2, ArtNr_Teil3;
Birgitta
Geht allerdings erst seit Release 6.1
Birgitta
Similar Threads
-
By DEVJO in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 06-05-15, 11:17
-
By malzusrex in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 01-09-14, 21:48
-
By psd-400 in forum NEWSboard Server Job
Antworten: 0
Letzter Beitrag: 29-11-13, 11:44
-
By RPG-Programmierer in forum NEWSboard Server Job
Antworten: 0
Letzter Beitrag: 13-11-13, 19:27
-
By UGildehaus in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-01-03, 18:48
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