Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: mael15 am Mai 22, 2026, 10:13:50

Titel: Bericht sortieren nach Summe im Fußbereich
Beitrag von: mael15 am Mai 22, 2026, 10:13:50
Hallo zusammen,
ich scheitere an der Sortierung eines Berichts nach der Summe von Umsätzen im Fußbereich, hier ein Bild:
https://1drv.ms/i/c/b8b55490dc5aaddf/IQBZJyvT7JDfRLRZ-bsX76-FAbBDR3H8Q1sJR7EpOwqYAQY?e=bR3IRl (https://1drv.ms/i/c/b8b55490dc5aaddf/IQBZJyvT7JDfRLRZ-bsX76-FAbBDR3H8Q1sJR7EpOwqYAQY?e=bR3IRl)
Es scheint intuitiv so einfach: Sortieren nach -> Ausdruck, aber wenn ich dort den Name des Feldes "=[Summe von Umsatz]" angebe erscheint in der Bereichtsansicht "Parameter eingeben: Summe von Umsatz"
Was mache ich falsch?
Titel: Re: Bericht sortieren nach Summe im Fußbereich
Beitrag von: andyfau am Mai 22, 2026, 11:01:20
Hallo,
eine direkte Sortierung von Summen ist in Access nicht möglich, weil Access immer zuerst sortiert und dann summiert. Es muss also zuerst eine Abfrage erstellt werden, die die Summen bildet, die entsprechend sortiert ist. Das Summenfeld kann dann in eine entsprechende weitere Abfrage mit den Einzelposten einbezogen werden. Der dann erstellte, darauf basierende Bericht, muss dann nur noch entsprechend gruppiert werden.
Titel: Re: Bericht sortieren nach Summe im Fußbereich
Beitrag von: mael15 am Mai 22, 2026, 11:54:48
Vielen Dank! Jetzt bin ich schonmal einen Schritt weiter. Kannst du mir auch noch mit der Abfrage helfen? Ich habe es innerhalb einer Abfrage erfolglos mit SUM() probiert, aber du schriebst von einer weiteren Abfrage nach der ersten? Wie mache ich das?
Das ist mein erfolgloser Versuch:
SELECT
    T_RechnungenH.Name AS Kunde,
    T_RechnungenH.GesamtBrutto,
    T_RechnungenH.Zahlung,
    T_RechnungenH.Umsatz,
    SUM(T_RechnungenH.Umsatz) As GesamtUmsatz,
    T_RechnungenH.Status,
    T_RechnungenH.Jahr
FROM
    T_RechnungenH LEFT JOIN T_AufträgeH ON T_RechnungenH.AuftragsNr = T_AufträgeH.AuftragsNr
WHERE
    T_RechnungenH.Status<>9 And T_RechnungenH.Jahr Like Forms!F_Übersichten.Jahr And T_RechnungenH.KundenNr<>999
GROUP BY
    T_RechnungenH.Name,
    T_RechnungenH.GesamtBrutto,
    T_RechnungenH.Zahlung,
    T_RechnungenH.Umsatz,
    T_RechnungenH.Status,
    T_RechnungenH.Jahr
ORDER BY
    T_RechnungenH.Name;
Titel: Re: Bericht sortieren nach Summe im Fußbereich
Beitrag von: Bitsqueezer am Mai 22, 2026, 12:20:37
Hallo,

Bilder bitte immer im Forum einfügen. Ich persönlich klicke keine Links auf externe Provider an und da bin ich nicht der Einzige...

Summierung: Ein Aggregat wie SUM soll immer mehr als eine Zeile summieren, sonst wäre es keine Summe, sondern die Wiedergabe des Zeilenwertes. Also mind. 2 Rechnungen z.B.

Und GROUP BY bestimmt, für welche Gruppen Du jeweils eine Summe haben willst.
Also eine geeignete Spalte wäre etwa Jahr, dann erhältst Du die Summe aus allen Rechnungen je Jahr.
Je mehr Spalten Du in GROUP BY einfügst, desto kleiner wird die Anzahl Rechnungen, weil jedes eine Gruppenebene ist, und die Summe ist die Summe aus ALLEN angegebenen Gruppenspalten. Fügst Du also zu Jahr auch Status hinzu, wird SUM Dir pro Jahr und pro Status je eine Summe geben, aber nicht für das ganze Jahr.
Wenn Du nun also auch noch Umsatz hinzufügst, aber SUM auf den Umsatz rechnen soll, dann bekommst Du je Jahr/Status/Umsatz eine Summe, was sehr wahrscheinlich den Umsatz je Rechnung ausgeben wird, außer Du hast 2 oder mehr Rechnungen mit dem gleichen Umsatz, die würden dann zusammengefaßt werden. Was aber eher sinnfrei ist als Ergebnis.
Mit anderen Worten: Umsatz hat in der Gruppierung nichts verloren, denn Du willst ja SUM(Umsatz) ausgeben. Umsatz ist also Dein Summen-Aggregat.

Du brauchst auch keine 2. Abfrage, in ORDER BY kannst Du den SUM-Ausdruck (ohne den Aliasnamen) einfach wiederholen, dann wird nach der Summe sortiert.
Also bei Dir:
ORDER BY SUM(T_RechnungenH.Umsatz)
Gruß

Christian

Titel: Re: Bericht sortieren nach Summe im Fußbereich
Beitrag von: mael15 am Mai 22, 2026, 12:37:19
Vielen Dank Christian!
Zitat von: Bitsqueezer am Heute um 12:20:37Bilder bitte immer im Forum einfügen. Ich persönlich klicke keine Links auf externe Provider an und da bin ich nicht der Einzige...
Hab leider nur die Funktion "Bild einfügen" mit URL Anganbe gefunden und habe keine Domain unter der ich ein Bild verlinken könnte. Hab ich was übersehen? Ich fände es auch einfacher wenn man zu einem Post ein Bild hochladen könnte.
Zitat von: Bitsqueezer am Heute um 12:20:37Und GROUP BY bestimmt, für welche Gruppen Du jeweils eine Summe haben willst.
Ich hatte die GROUP BY Inhalte nur hinzugefügt um den Fehler "In der Abfrage ist der angegebene Ausdruck "Kunde" nicht als Bestandteil einer Aggregatfunktion enthalten." loszuwerden. Kann ihn ihn anders loswerden ohne alle Felder des SELECT Block in GROUP BY zu wiederholen?
Titel: Re: Bericht sortieren nach Summe im Fußbereich
Beitrag von: MzKlMu am Mai 22, 2026, 15:32:15
Hallo,
ZitatHab ich was übersehen? Ich fände es auch einfacher wenn man zu einem Post ein Bild hochladen könnte.

Klicke auf "Antwort" dann findest Du unten einen Button:

ZitatAttachments and other options

Dann kannst Du bilder und auch ggf. eine Beispieldb (gezippt) hochladen.
Titel: Re: Bericht sortieren nach Summe im Fußbereich
Beitrag von: Bitsqueezer am Mai 22, 2026, 17:52:01
Hallo,

ja, das ist auch richtig, alle Spalten, die Du anzeigst, aber kein Aggregat wie MIN, MAX, SUM usw. haben, sind Gruppierungsspalten, hatte ich oben ja erwähnt.
Wenn Du also Kunde in die SELECT-Liste einbaust, dann mußt Du auch danach gruppieren, wenn Du Kunde und SUM(Umsatz) einbaust, erhältst Du die Summe der Umsätze pro Kunde.

Es bringt aber nichts, mehrere Felder einzufügen, wenn Du nicht JEDES davon als Gruppierungsebene willst. Mit Kunde/Jahr/SUM(Umsatz) siehst Du z.B. die Umsätze je Kunde und je Jahr.

Man kann also in eine GROUP BY Abfrage nicht einfach alle anderen Felder mit einfügen, die man "auch mit listen" will. Wenn Du z.B. neben Kundennummer auch Kundenname und Land des Kunden mit listen willst, ist das kein Problem, denn das sind Daten, die direkt zum Kunden gehören und dadurch keine zusätzliche Gruppierungsebene bauen. Die müssen dann natürlich trotzdem mit in die GROUP BY Liste.
Wenn Du dagegen eine Rechnungsnummer mit einbaust, bekommst Du nur den Umsatz jeder Rechnungsnummer zu sehen, weil Du dann jede einzelne Rechnung "summierst". Die Rechnungsnummer hat also in so einer Abfrage nichts verloren, ebenso nicht eine Primary Key ID.
Ein Aggregat braucht immer mind. 2 Datensätze über alle Gruppierungsebene, sonst macht es keinen Sinn, dann kann man auch eine normale Abfrage verwenden, die alle ebenfalls einzeln listet.
Und wenn man aggregiert, gehen zwangsläufig Informationen dabei verloren: Wenn Du je Kunde alle Rechnungen summieren willst, ist die Information, die Du nicht mehr verwenden kannst, die einzelne Rechnungsnummer.

Und das/die Felder, die für eine Aggregatsfunktion wie SUM verwendet werden, haben normalerweise NIE etwas in der GROUP BY Liste zu suchen, weil dann kein Aggregat mehr gebildet werden kann. Etwas anderes ist es, wenn Du alle Rechnungswerte nach Werten gruppieren willst und z.B. COUNT verwendest, um zu zählen, wieviele Rechnungen mit Wert 100, 200, 300 es gab. Das würde man aber dennoch anders machen.

Gruß

Christian