-
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
-
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
-
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
-
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
-
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.
-
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
-
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 von KingofKning
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.
-
In meinem geposteten Beispiel kommt ad##21 nicht vor. Da kann eigentlich kein Meckern kommen. Das Komma hinter Netto_pos_wert muss aber weg.
-
Zitat von dschroeder
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.
-
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
-
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.
-
Zitat von KingofKning
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
-
By alex61 in forum IBM i Hauptforum
Antworten: 16
Letzter Beitrag: 05-10-18, 13:00
-
By nico1964 in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 13-09-18, 09:54
-
By Rhenania Computer in forum NEWSboard Server Software
Antworten: 0
Letzter Beitrag: 31-08-16, 15:38
-
By Robi in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 25-09-14, 14:30
-
By hs in forum IBM i Hauptforum
Antworten: 12
Letzter Beitrag: 13-06-14, 13:33
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