Abfrage mit Summe einer Spalte

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

bello15
***
Beiträge: 53
Registriert: Fr, 10.11.2006 10:36

Abfrage mit Summe einer Spalte

Beitrag von bello15 »

Hallo,
habe eine Abfrage und möchte alle Datensätze sehen und zusätzlich für eine Spalte die Gesamtsumme errechnen.
Eine Abfrage mit allen Datensätzen kann ich. Eine weitere Abfrage mit der Gesamtsumme ohne alle Datensätze zu sehen kann ich auch.
Jetzt habe ich im Forum gesucht und dann einiges ausprobiert :
1. Versuch
SELECT "Standort","Beschreibung",SUM("WB_Kosten") FROM "Anlagegueter" ORDER BY "Standort" ASC
hat diesen Fehler:
Anhang 1
2. Versuch
SELECT "Standort","Beschreibung",SUM("WB_Kosten") FROM "Anlagegueter" ORDER BY "Standort" ASC GROUP BY "Standort"
hat Fehler: Anhang 2
3. Versuch
SELECT "Standort","Beschreibung",SUM("WB_Kosten") FROM "Anlagegueter" GROUP BY "Standort"
hat Fehler: Anhang 3
4. Versuch
SELECT "Standort", "Beschreibung", "WB_Kosten" FROM "Anlagegueter" ORDER BY "Standort" ASC
UNION
SELECT SUM( "WB_Kosten" ) FROM "Anlagegueter"
hat Fehler: Der eingesetzte Befehl ist kein ist kein SELECT-Befehl. Es sind nur abfragen erlaubt.

Wie man sieht bin ich nicht erfahren in SQL. Kann mir jemand helfen ?
Dateianhänge
Base_Versuch_3.JPG
Base_Versuch_3.JPG (18.99 KiB) 3022 mal betrachtet
Base_Versuch_2.JPG
Base_Versuch_2.JPG (9.34 KiB) 3022 mal betrachtet
Base_Versuch_1.JPG
Base_Versuch_1.JPG (19.3 KiB) 3022 mal betrachtet
Open Office 4.0.1
Windows 7 home premium SP 1
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Abfrage mit Summe einer Spalte

Beitrag von DPunch »

Aloha
bello15 hat geschrieben:1. Versuch
SELECT "Standort","Beschreibung",SUM("WB_Kosten") FROM "Anlagegueter" ORDER BY "Standort" ASC
SUM ist eine Aggregatfunktion, die so nicht verwendet werden kann - es fehlt die Angabe, unter welchen Kriterien die Summe gebildet werden soll (Du weisst ja, dass Du für jeden Standort die entsprechende Summe haben willst, aber woher soll die Datenbank das wissen?)
bello15 hat geschrieben:2. Versuch
SELECT "Standort","Beschreibung",SUM("WB_Kosten") FROM "Anlagegueter" ORDER BY "Standort" ASC GROUP BY "Standort"
Unter anderem gleicher Fehler wie oben (Gruppierung nach "Beschreibung"), dazu noch falsche Reihenfolge - ORDER BY ans Ende.
bello15 hat geschrieben:3. Versuch
SELECT "Standort","Beschreibung",SUM("WB_Kosten") FROM "Anlagegueter" GROUP BY "Standort"
Auch hier fehlt die Gruppierung über "Beschreibung".
bello15 hat geschrieben:4. Versuch
SELECT "Standort", "Beschreibung", "WB_Kosten" FROM "Anlagegueter" ORDER BY "Standort" ASC
UNION
SELECT SUM( "WB_Kosten" ) FROM "Anlagegueter"
UNION schreibt die Ergebnisse untereinander - dafür ist zwingend erforderlich, dass beide Ergebnisse die gleiche Anzahl an Spalten haben ("Standort", "Beschreibung", "WB_Kosten" = 3 Spalten, SUM( "WB_Kosten" ) = 1 Spalte).
Die Fehlermeldung sagt Dir, dass Base den Befehl UNION nicht versteht. Du müsstest dafür das Häkchen in der Symbolleiste bei "SQL-Kommando direkt ausführen" setzen.

Die richtige Syntax wäre:

Code: Alles auswählen

SELECT "Standort","Beschreibung",SUM("WB_Kosten") FROM "Anlagegueter" GROUP BY "Standort", "Beschreibung" ORDER BY "Standort" ASC
Googlen mit dem Stichwort "Aggregatfunktion" sollte unendlich viele Seiten auswerfen, auf denen Du Dich dazu näher informieren kannst.
bello15
***
Beiträge: 53
Registriert: Fr, 10.11.2006 10:36

Re: Abfrage mit Summe einer Spalte

Beitrag von bello15 »

Hallo DPunch,schönen Dank für Deinen Beitrag, sehe jetzt etwas klarer.
Habe Deinen Vorschlag
-->SELECT "Standort", "Beschreibung", SUM("WB_Kosten") FROM "Anlagegueter" GROUP BY "Standort", "Beschreibung" ORDER BY "Standort" ASC
ausgeführt-
leider ist das Ergebnis ohne jede Gruppierung und leider auch ohne die von mir gesuchte Summe.
Wegen des Versuches mit UNION habe ich das ausprobiert:
SELECT "Standort", "Beschreibung", "WB_Kosten" FROM "Anlagegueter" ORDER BY "Standort" ASC
UNION
SELECT "Standort", "Beschreibung", SUM("WB_Kosten") FROM "Anlagegueter"
da kommt : wenn ich aus dem SQL Fenster die Abfrage starte ist der letzt Datensatz doppelt, aber im Feld WB_Kosten tatsächlich die gesucht Totalsumme.
wenn ich die Abfrage aus dem Abfrage-Fenster starte bekomme ich den Fehler "Not in aggregate function or group by clause: org.hsqldb.expression@16068c9 in statement[hier steht meine Abfrage]
Hast Du evtl. noch eine Idee ?
Schon vorab vielen Dank.
Open Office 4.0.1
Windows 7 home premium SP 1
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Abfrage mit Summe einer Spalte

Beitrag von DPunch »

Aloha
bello15 hat geschrieben:leider ist das Ergebnis ohne jede Gruppierung
Natürlich ist das Ergebnis mit Gruppierung. Wenn alle Datensätze in Bezug auf Standort und/oder Beschreibung unterschiedliche Werte haben, siehst Du sie halt nicht.
bello15 hat geschrieben:wenn ich die Abfrage aus dem Abfrage-Fenster starte bekomme ich den Fehler "Not in aggregate function or group by clause: org.hsqldb.expression@16068c9 in statement[hier steht meine Abfrage]
Genau den Fehler und seine Ursache hatte ich versucht, Dir klar zu machen - siehe meinen vorherigen Post.
bello15 hat geschrieben:aber im Feld WB_Kosten tatsächlich die gesucht Totalsumme.
Da hatte ich wohl missverstanden, dass Du die absolute Totalsumme haben wolltest, nicht die vom zugehörigen Standort.
Wenn es Dir um die völlig unabhängige Totalsumme geht:

Code: Alles auswählen

SELECT "Standort","Beschreibung",(SELECT SUM("WB_Kosten") FROM "Anlagegueter") FROM "Anlagegueter" ORDER BY "Standort" ASC
bello15
***
Beiträge: 53
Registriert: Fr, 10.11.2006 10:36

Re: Abfrage mit Summe einer Spalte

Beitrag von bello15 »

Hallo Dpunch,
mit Deiner Hilfe habe ich das
--> (SELECT SUM("WB_Kosten") FROM "Anlagegueter")
eingebaut und jetzt geht es.
Vielen Dank !
Open Office 4.0.1
Windows 7 home premium SP 1
Antworten