[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Aug 2006
    Beiträge
    2.072

    Verständnisfrage SQL -> Group by

    Hallo *all,
    ich habe hier eine Tabelle mit 20 Feldern wo ich bei 5 Feldern eine Summe bilden muß.

    Für die Summenbildung brauche ich ja ein "group by".

    das heißt dann aber leider auch das ich alle 15 Felder in der Reihenfolge der Gruppierung aufnehmen muß.

    Aber ich möchte ja nicht alle 15 Felder als Kriterium haben sondern eigentlich nur 3.
    Mache ich einen Denkfehler oder ist das so.

    GG 4270

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Das ist der Vorteil von SQL, dass du nur verwendest was du brauchst (im Gegensatz zu Direktzugriffen).
    Also einfach mal per STRSQL versuchen und dann embedded verwenden:

    select g1, g2, ..., gn, sum(v1) as v1, sum(v2) as v2, ...
    from mytable
    group by g1, g2, ..., gn
    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

  3. #3
    Registriert seit
    Aug 2006
    Beiträge
    2.072
    Ich poste zum besseren Verständnis mal die Abfrage. (Warum beim Antworten die option Code einfügen fehlt weiß wohl auch keine)
    [CODDE]
    select TETENR as Teilenummer,
    TEMCD4 as Matchcodefeld,
    STST29 as Produktart,
    STID2 as Umsatz_Identnummer,
    sum(stwt01) as Menge,
    sum(stwt02) as Nettowert,
    sum(stwt03) as Herstellkosten,
    sum(stwt04) as Nettogewicht,
    sum(stwt05) as Deckungsbeitrag,
    sum(stwt06) as Berechnete_Menge,
    sum(stwt07) as Netto_Pos_Wert,
    stsa04 as Vertreter_Anforderer,
    stsx04 as Vertreter_Anforderer,
    stsa06 as Verkaufsleiter_Genehmiger,
    stsa08 as Laenderstatistikcode,
    stst01 as Artikel_Verbrauchergruppe,
    stst08 as Artikelart,
    STHKKZ as Herstellkosten,
    test09 as Kontierungsschluessel,
    TEST29 as Produktart,
    Test31 as Warengruppe,
    test32 as Produktsschl_Heinze,
    test34 as Produktgruppe,
    test35 as Material_Art,
    AD##21 as Verkaeufer,
    ad##26 as Konzern,
    ad##27 as Verband
    from aruba_msvc/arusta01jn
    where stfa = 1
    and stsaar <> '1'
    and stplis = 2
    and test09 <> 602
    and STMOAN = 20180812
    group by stid2, tetenr, temcd4, stst29, stsa04, stsx04, stsa06, stsa08, stst01, stst08, STHKKZ, test09, TEST29, Test31, test32, test34, test35, AD##21, ad##26, ad##27
    [/CODE]

    Die ganzen Felder by group by muß ich ja angeben damit er nicht motzt.
    Eigentlich will ich nur eine Gruppierung nach stid2 und tetenr.

    GG 4270

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Wenn nur nach stid2 und tetenr gruppieren willst, müsste doch folgendes reichen, oder?:

    Code:
    select TETENR as Teilenummer, STID2 as Umsatz_Identnummer, 
    sum(stwt01) as Menge, 
    sum(stwt02) as Nettowert, 
    sum(stwt03) as Herstellkosten, 
    sum(stwt04) as Nettogewicht, 
    sum(stwt05) as Deckungsbeitrag, 
    sum(stwt06) as Berechnete_Menge, 
    sum(stwt07) as Netto_Pos_Wert, 
    from aruba_msvc/arusta01jn 
    where stfa = 1 
    and stsaar <> '1' 
    and stplis = 2 
    and test09 <> 602 
    and STMOAN = 20180812 
    group by stid2, tetenr

  5. #5
    Registriert seit
    Aug 2006
    Beiträge
    2.072
    Nein, dann meckert er ja das Felder fehlen...
    sieht dann z.B. so aus: Spalte AD##21 oder Ausdruck in SELECT-Liste nicht gültig.

  6. #6
    Registriert seit
    May 2002
    Beiträge
    1.121
    Alle Felder die du im Select hast, müssen auch in group by auftauchen

    Gruß
    Ronald

    Wenn du auf ERWEITERT klickst, dann hast du auch wieder den Button für CODE beim Antworten

  7. #7
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Welcher Wert soll in Spalte AD##21 angezeigt werden, wenn nicht alle Datensätze, die zu einer Summe zusammengefaßt werden, in dieser Spalte denselben Wert haben?

    Zitat Zitat von KingofKning Beitrag anzeigen
    Nein, dann meckert er ja das Felder fehlen...
    sieht dann z.B. so aus: Spalte AD##21 oder Ausdruck in SELECT-Liste nicht gültig.

  8. #8
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    In meinem geposteten Beispiel kommt ad##21 nicht vor. Da kann eigentlich kein Meckern kommen. Das Komma hinter Netto_pos_wert muss aber weg.

  9. #9
    Registriert seit
    Aug 2006
    Beiträge
    2.072
    Zitat Zitat von dschroeder Beitrag anzeigen
    In meinem geposteten Beispiel kommt ad##21 nicht vor. Da kann eigentlich kein Meckern kommen. Das Komma hinter Netto_pos_wert muss aber weg.
    Ja aber Mecker kommt dann von meinem Chef warum er statt 20 Felder nur 9 hat. Kann ja nicht die Lösung sein.

  10. #10
    Registriert seit
    Aug 2006
    Beiträge
    2.072
    Tja, in der Summe sind das 300.000 Datensätze die verdichtet werden sollen.
    Ich will aber die Summe nur auf Haupt-Rechnungsempfänger und die Artikel haben.
    Nicht aber z.B. auf den Verkäufer der ja naturgemäß für jeden Unter-Rechnungsempfänger unterschiedlich ist.

    Aber vermutlich muß man dann 2 SQL-Abfragen machen.


    GG 4270

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    CODE funktioniert, wenn man es nicht mit DD schreibt.

    Ansonsten nimm das SQL von Schroeder und lass das letzte Komma vor "from" weg, sonst kann ich da keinen Fehler entdecken.

    Natürlich gilt generell folgendes:
    Group By-Felder dürfen kein Aggregat haben, alle anderen Felder müssen ein Aggregat haben. Group By macht ja sonst keinen Sinn.
    Felder, für die ich kein Aggregat benötige lasse ich doch einfach weg.
    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

  12. #12
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Zitat Zitat von KingofKning Beitrag anzeigen
    Ja aber Mecker kommt dann von meinem Chef warum er statt 20 Felder nur 9 hat. Kann ja nicht die Lösung sein.
    OK, dann habe ich dich falsch verstanden. Du hattest am Anfang geschrieben, du würdest nur 3 Felder benötigen. Das habe ich missverstanden.

Similar Threads

  1. Antworten: 16
    Letzter Beitrag: 05-10-18, 14:00
  2. SQL - Verständnisfrage
    By nico1964 in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 13-09-18, 10:54
  3. FUJIFILM Imaging Germany, GEWA music und die Igepa group setzen auf AS400 Software
    By Rhenania Computer in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 31-08-16, 16:38
  4. sql performance einzelsatz / group by
    By Robi in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 25-09-14, 15:30
  5. Antworten: 12
    Letzter Beitrag: 13-06-14, 14:33

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •