🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[GELÖST]Summe in Abfrage /sql

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
eiswiese
Beiträge: 29
Registriert: Fr 8. Mär 2013, 10:41

[GELÖST]Summe in Abfrage /sql

Beitrag von eiswiese » Di 22. Okt 2013, 07:19

Ich habe hier 2 Tabellen (Schichtdaten und Tbl_ZeitraumFilter) und möchte die Umsatzsumme pro Tag (für einen per Formular/Tabelle gefilterten Zeitraum) mit einer Abfrage angezeigt bekommen. Das klappt zunächst für die Einzelbeträge auch ganz wunderbar, mittels

SELECT "Schichtdaten"."SchichtDatum", "Schichtdaten"."7%Bar", "Schichtdaten"."19%Bar" FROM "Schichtdaten", "Tbl_ZeitraumFilter" WHERE "Schichtdaten"."SchichtDatum" BETWEEN "Tbl_ZeitraumFilter"."VonDatum" AND "Tbl_ZeitraumFilter"."BisDatum" ORDER BY "Schichtdaten"."SchichtDatum" ASC

Sobald ich aber versuche die Summe des jeweiligen Tages zu bilden, mittels

SELECT "Schichtdaten"."SchichtDatum", SUM( "Schichtdaten"."7%Bar" ) AS "Umsatzsumme 7%", SUM( "Schichtdaten"."19%Bar" ) AS "Umsatzsumme 19%" FROM "Schichtdaten", "Tbl_ZeitraumFilter" WHERE "Schichtdaten"."SchichtDatum" BETWEEN "Tbl_ZeitraumFilter"."VonDatum" AND "Tbl_ZeitraumFilter"."BisDatum" ORDER BY "Schichtdaten"."SchichtDatum" ASC

gibt´s Gemecker:
SQL-Status: 37000
Fehler-Code: -67
Not in aggregate function or group by clause: org.hsqldb.Expression@12cdd20 in statement [SELECT "Schichtdaten"."SchichtDatum", SUM( "Schichtdaten"."7%Bar" ) AS "Umsatzsumme 7%", SUM( "Schichtdaten"."19%Bar" ) AS "Umsatzsumme 19%" FROM "Schichtdaten", "Tbl_ZeitraumFilter" WHERE "Schichtdaten"."SchichtDatum" BETWEEN "Tbl_ZeitraumFilter"."VonDatum" AND "Tbl_ZeitraumFilter"."BisDatum" ORDER BY "Schichtdaten"."SchichtDatum" ASC]


Ich habe es auch schon mit
SELECT "Schichtdaten"."SchichtDatum", (SELECT SUM("Schichtdaten"."7%Bar")).....
versucht, aber auch das funktioniert nicht.
Da steht wohl einer auf dem Schlauch... :?:
Zuletzt geändert von eiswiese am Di 22. Okt 2013, 14:01, insgesamt 1-mal geändert.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Summe in Abfrage /sql

Beitrag von RobertG » Di 22. Okt 2013, 08:52

Hallo eiswiese,
Not in aggregate function or group by clause
Du kannst die Summe eines Feldes nur nehmen, wenn Du die anderen Felder der Abfrage gruppierst. Willst Du die Summe für ein bestimmtes Schichtdatum? Dann füge der Abfrage "GROUP BY "Schichtdaten"."Schichtdatum" hinzu.
Willst Du die Summe über einen entsprechenden Zeitraum, so musst Du eine Unterabfrage stellen:

Code: Alles auswählen

SELECT "Schichtdaten"."SchichtDatum", SELECT(SUM( "Schichtdaten"."7%Bar" ) FROM "Schichtdaten", "Tbl_ZeitraumFilter" WHERE "Schichtdaten"."SchichtDatum" BETWEEN "Tbl_ZeitraumFilter"."VonDatum" AND "Tbl_ZeitraumFilter"."BisDatum" ) AS "Umsatzsumme 7%", SELECT(SUM( "Schichtdaten"."19%Bar" ) FROM "Schichtdaten", "Tbl_ZeitraumFilter" WHERE "Schichtdaten"."SchichtDatum" BETWEEN "Tbl_ZeitraumFilter"."VonDatum" AND "Tbl_ZeitraumFilter"."BisDatum" ) AS "Umsatzsumme 19%" FROM "Schichtdaten", "Tbl_ZeitraumFilter" WHERE "Schichtdaten"."SchichtDatum" BETWEEN "Tbl_ZeitraumFilter"."VonDatum" AND "Tbl_ZeitraumFilter"."BisDatum" ORDER BY "Schichtdaten"."SchichtDatum" ASC
Zur Tabellenkonstruktion:
Was machst Du, wenn sich die Mehrwertsteuersätze ändern? Heißen dann die Felder weiterhin 7% bzw. 19%?

Gruß

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

pmoegenb

Re: Summe in Abfrage /sql

Beitrag von pmoegenb » Di 22. Okt 2013, 08:54

Hallo eiswiese,
in der Fehlermeldung wird doch auf die fehlende

Code: Alles auswählen

GROUP BY
Klausel hingewiesen, die bei Aggregatfunktionen wie z. B. SUM erforderlich sind. D.h., ohne Gruppierung der Datensätze können diese Funktionen nicht ausgeführt werden.

Füge also vor der

Code: Alles auswählen

ORDER BY "Schichtdaten"."SchichtDatum"
Klausel noch die Klausel

Code: Alles auswählen

GROUP BY "Schichtdaten"."SchichtDatum"
ein.

Edit: Robert war schneller

eiswiese
Beiträge: 29
Registriert: Fr 8. Mär 2013, 10:41

Re: Summe in Abfrage /sql

Beitrag von eiswiese » Di 22. Okt 2013, 13:53

Das war jetzt aber zu einfach... :oops:
Funktioniert tadellos!

@Robert: dann wechsel ich halt in´s Hotelgewerbe (vielleicht rettet mich dann ja die Partei, die es nicht mehr gibt)!
Aber im Ernst: Da lauert im Hintergrund auf Sicht ja in der Tat noch eine ganz andere Baustelle. Riecht nach einer Extra-Tabelle mit MwSt-Sätzen und anderen Überschriften...

@Peter: das mit dem "group by..." hatte ich tatsächlich auch schon bemerkt, aber meine Versuche, die Gruppierung in derselben Abfragespalte (Schichtdaten.Schichtdatum) vorzunehmen, funktionierten nicht. Mit der zusätzlichen Spalte desselben Namens klappt das jetzt. Warum eigentlich?

So oder so: Ich danke euch beiden für die schnelle Hilfe und erkläre euch BEIDE (nach Sichtung des Zielfotos) zu Siegern! :)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten