[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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
    
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #2
    Registriert seit
    May 2015
    Beiträge
    10
    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!

  3. #3
    Registriert seit
    Apr 2005
    Beiträge
    385
    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

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Group by Cube scheint mir das selbe Ergebnis zu bringen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. SQL Datums Herausforderung
    By DEVJO in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 06-05-15, 11:17
  2. QSH und HTTP - geht nicht
    By malzusrex in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 01-09-14, 21:48
  3. RPG-Freelancer sucht neue Herausforderung
    By psd-400 in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 29-11-13, 11:44
  4. PLZ 28 Erfahrener RPG-Programmierer sucht neue Herausforderung
    By RPG-Programmierer in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 13-11-13, 19:27
  5. QUSRSYS geht auf ERROR
    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
  •