BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
[gelöst]SQL mit Group By
[gelöst]SQL mit Group By
Guten Morgen zusammen,
ich knoble gerade über ein Problem und konnte dazu keine befriedigende Antwort im Netz finden.
Das Problem bezieht sich auf die interne HSQL-Datenbank, LO-Version 7.0.0.3 (x64). Die SQL-Befehle habe ich direkt im SQL-Fenster von LO-Base eingegeben.
Ich habe eine kleine Tabelle mit gerade mal drei Felder: Part, PartName und MengeBrutto.
Der Wert Part kommt mehrfach vor und soll mit dem Sum-Befehl addiert werden. Soweit so gut:
SELECT "Part", SUM ("MengeBrutto" ) FROM "ZollLiPos" GROUP BY "Part"
Mit diesem Befehl passt das Ergebnis:
10.01.0262,120000.0,10.01.0262,
16.01.0090,840000.0,16.01.0090,
21.01.0755,120000.0,21.01.0755,
22.02.0710,120000.0,22.02.0710,
26.01.0152,120000.0,26.01.0152,
26.01.0158,120000.0,26.01.0158,
Hier wundere ich mich nur über die doppelte Ausgabe des Feldes Part.
Möchte ich das Feld PartName mit ausgeben
SELECT "Part", "PartName", SUM ("MengeBrutto" ) FROM "ZollLiPos" GROUP BY "Part"
erhalte ich folgende Meldung:
2: Not in aggregate function or group by clause: org.hsqldb.Expression@42600636 in statement [SELECT "Part", "PartName", SUM( "MengeBrutto" ) FROM "ZollLiPos" GROUP BY "Part"]
Die Zuordnung Part und PartName ist eindeutig, Part ist eine Teilenummer, PartName der zugehörige Name.
Danke für sachdienliche Hinweise.
Schöner Sonntag noch
Ray
ich knoble gerade über ein Problem und konnte dazu keine befriedigende Antwort im Netz finden.
Das Problem bezieht sich auf die interne HSQL-Datenbank, LO-Version 7.0.0.3 (x64). Die SQL-Befehle habe ich direkt im SQL-Fenster von LO-Base eingegeben.
Ich habe eine kleine Tabelle mit gerade mal drei Felder: Part, PartName und MengeBrutto.
Der Wert Part kommt mehrfach vor und soll mit dem Sum-Befehl addiert werden. Soweit so gut:
SELECT "Part", SUM ("MengeBrutto" ) FROM "ZollLiPos" GROUP BY "Part"
Mit diesem Befehl passt das Ergebnis:
10.01.0262,120000.0,10.01.0262,
16.01.0090,840000.0,16.01.0090,
21.01.0755,120000.0,21.01.0755,
22.02.0710,120000.0,22.02.0710,
26.01.0152,120000.0,26.01.0152,
26.01.0158,120000.0,26.01.0158,
Hier wundere ich mich nur über die doppelte Ausgabe des Feldes Part.
Möchte ich das Feld PartName mit ausgeben
SELECT "Part", "PartName", SUM ("MengeBrutto" ) FROM "ZollLiPos" GROUP BY "Part"
erhalte ich folgende Meldung:
2: Not in aggregate function or group by clause: org.hsqldb.Expression@42600636 in statement [SELECT "Part", "PartName", SUM( "MengeBrutto" ) FROM "ZollLiPos" GROUP BY "Part"]
Die Zuordnung Part und PartName ist eindeutig, Part ist eine Teilenummer, PartName der zugehörige Name.
Danke für sachdienliche Hinweise.
Schöner Sonntag noch
Ray
Zuletzt geändert von Ray123 am Fr 16. Okt 2020, 19:25, insgesamt 1-mal geändert.
Win10 20H2 x64 LO7.1.0.3
Re: SQL mit Group By
Moin,
versuch es mal so:
Gruß R
versuch es mal so:
Code: Alles auswählen
SELECT "Part", "PartName", SUM ("MengeBrutto" ) FROM "ZollLiPos" GROUP BY "Part", "PartName"
Windows 10: AOO, LO Linux Mint: AOO, LO
Re: SQL mit Group By
Danke schön, die Meldung kommt dann nicht, die Ausgabe sieht so aus:
10.01.0262, ,120000.0,10.01.0262, ,
16.01.0090, ,840000.0,16.01.0090, ,
21.01.0755, ,120000.0,21.01.0755, ,
22.02.0710, ,120000.0,22.02.0710, ,
26.01.0152, ,120000.0,26.01.0152, ,
wieder ein Feld mehr und wenn ich die Tabelle mit ca. zehn weiteren Feldern erweitern will, kommen dann wohl keine Daten. Ich werde da wohl beim ersten Group-Befehl bleiben und mit einer zweiten Abfrage die restlichen Daten lesen.
Gibt es eine Erklärung, warum die restlichen Felder nicht gelesen werden?
Gruß
Ray
10.01.0262, ,120000.0,10.01.0262, ,
16.01.0090, ,840000.0,16.01.0090, ,
21.01.0755, ,120000.0,21.01.0755, ,
22.02.0710, ,120000.0,22.02.0710, ,
26.01.0152, ,120000.0,26.01.0152, ,
wieder ein Feld mehr und wenn ich die Tabelle mit ca. zehn weiteren Feldern erweitern will, kommen dann wohl keine Daten. Ich werde da wohl beim ersten Group-Befehl bleiben und mit einer zweiten Abfrage die restlichen Daten lesen.
Gibt es eine Erklärung, warum die restlichen Felder nicht gelesen werden?
Gruß
Ray
Win10 20H2 x64 LO7.1.0.3
Re: SQL mit Group By
Hallo Ray,
ich habe versucht das Verhalten mit der doppelten Ausgabe des ersten Feldes nach zu vollziehen. Passiert hier mit der internen (alten) HSQLDB auch, nicht aber mit einer externen neueren HSQLDB. Startest Du den Befehl nicht über Extras → SQL, sondern als Abfrage über die GUI, so passiert das nicht.
Wenn Du die interne Firebird-Datenbank benutzt, dann stimmt auch die Anzeige in Extras → SQL. Es scheint also, dass die interne HSQLDB all die Felder noch einmal ausgibt, nach denen gruppiert wird.
Warum bei Dir die Abfrage mit einer zusätzlichen Gruppierung nicht mehr, sondern weniger Datensätze ausgibt ist mir ohne einen Blick in die Datenbank ein Rätsel. Vor allem auch rätselhaft erscheint mir, dass "PartName" grundsätzlich leer ist. Das würde eher zu dieser Art der Abfrage passen:
Gruß
Robert
ich habe versucht das Verhalten mit der doppelten Ausgabe des ersten Feldes nach zu vollziehen. Passiert hier mit der internen (alten) HSQLDB auch, nicht aber mit einer externen neueren HSQLDB. Startest Du den Befehl nicht über Extras → SQL, sondern als Abfrage über die GUI, so passiert das nicht.
Wenn Du die interne Firebird-Datenbank benutzt, dann stimmt auch die Anzeige in Extras → SQL. Es scheint also, dass die interne HSQLDB all die Felder noch einmal ausgibt, nach denen gruppiert wird.
Warum bei Dir die Abfrage mit einer zusätzlichen Gruppierung nicht mehr, sondern weniger Datensätze ausgibt ist mir ohne einen Blick in die Datenbank ein Rätsel. Vor allem auch rätselhaft erscheint mir, dass "PartName" grundsätzlich leer ist. Das würde eher zu dieser Art der Abfrage passen:
Code: Alles auswählen
SELECT "Part", "PartName", SUM ("MengeBrutto" ) FROM "ZollLiPos"
GROUP BY "Part", "PartName"
HAVING "PartName" IS NULL
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: SQL mit Group By
Hallo Robert,
ein Teil deiner Fragen kann ich klären, PartName habe ich zu Testzwecken grundsätzlich mit einem Leerzeichen belegt, da ich das Feld momentan nicht brauche. Die Tabelle besteht aktuell nur aus drei Feldern, von denen ich nur zwei benötige. Der weitere Ausbau steht aber bevor. Vielleicht noch eine Hintergrundinfo: Die Daten lese ich über einen ODBC-Treiber aus einem ERP-System und speichere sie in der hsqldb zwischen, um hier gleiche Artikel zu summieren, bevor mit den Daten eine XML-Datei erstellt wird.
Die Anzahl der Datensätze schwankt, da die Tabelle nach jeder Ausgabe gelöscht wird um sicherzustellen, daß in der XML-Datei auch nur die aktuell gewünschten Artikel vorhanden sind.
Gruß und Danke
Ray
ein Teil deiner Fragen kann ich klären, PartName habe ich zu Testzwecken grundsätzlich mit einem Leerzeichen belegt, da ich das Feld momentan nicht brauche. Die Tabelle besteht aktuell nur aus drei Feldern, von denen ich nur zwei benötige. Der weitere Ausbau steht aber bevor. Vielleicht noch eine Hintergrundinfo: Die Daten lese ich über einen ODBC-Treiber aus einem ERP-System und speichere sie in der hsqldb zwischen, um hier gleiche Artikel zu summieren, bevor mit den Daten eine XML-Datei erstellt wird.
Die Anzahl der Datensätze schwankt, da die Tabelle nach jeder Ausgabe gelöscht wird um sicherzustellen, daß in der XML-Datei auch nur die aktuell gewünschten Artikel vorhanden sind.
Gruß und Danke
Ray
Win10 20H2 x64 LO7.1.0.3
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️