SQL Funktionen SUM/AVG/COUNT etc.

JtGD28

Grünschnabel
Hallo,

ich habe eine Tabelle in der ich einzelne Felder als Summe zusammenfassen und bei anderen die Anzahl der Einträge zählen möchte. Dies sollte dann unterhalb der Datensätze als "Ergebniszeile" angezeigt werden.

Wie ist dies möglich? Was für Infos bräuchtet ihr noch von mir?

Gruß
Jörg
 
Hallo Nico,

ich habe folgenden Code, wenn ich Deinen Code ab UNION hinten an meinen Code anhänge bekomme ich eine Fehlermeldung.

Code:
SELECT Klienten.KlientenNr, Klienten.KlientenName, Klienten.KlientenVorname, Klienten.KlientenKontaktArt, Klienten.KlientenKontaktAnfrage, Projekte.ProjektArt, Projekte.ProjektSparte, Projekte.ProjektFP, Projekte.ProjektBGI, Projekte.ProjektBGII, Projekte.ProjektBGIII, Projekte.ProjektSGII, Projekte.ProjektSGIII, Projekte.ProjektSGIV, Projekte.UmsatzSparte AS Projekte_UmsatzSparte, Projekte.UmsatzProjektArt, Projekte.UmsatzAngesagt, Umsätze.UmsatzEH, Projekte.ProjektStatus
FROM (Klienten INNER JOIN Projekte ON Klienten.KlientenID=Projekte.KlientenID) LEFT JOIN Umsätze ON Projekte.ProjektID=Umsätze.ProjektID;

Wie kann ich die SUM Funktion hier richtigerweise einbauen?

Gruß
Jörg
 
Hallo,

habe jetzt folgenden SQL versucht. Dieser funktioniert, auch wenn die Ergebniszeile oberhalb der Datensätze angezeigt wird. Kann man das eventuell ändern!

Meine eigentliche Abfrage enthält aber viel mehr Felder, die ich jedoch nicht alle zählen, summieren etc. möchte! Sondern genau genommen insgeamt 5 von 19 Feldern sollen eine Funktion erhalten.

Code:
SELECT Klienten.KlientenName, Projekte.ProjektArt, Umsätze.UmsatzEH
FROM (Klienten INNER JOIN Projekte ON Klienten.[KlientenID] = Projekte.[KlientenID]) LEFT JOIN Umsätze ON Projekte.[ProjektID] = Umsätze.[ProjektID];
UNION
SELECT COUNT(Klienten.KlientenName), COUNT(Projekte.ProjektArt), SUM(Umsätze.UmsatzEH)
FROM (Klienten INNER JOIN Projekte ON Klienten.[KlientenID] = Projekte.[KlientenID]) LEFT JOIN Umsätze ON Projekte.[ProjektID] = Umsätze.[ProjektID];

Wie wäre das möglich?
 
Hi,

wenn Du sowieso auch die einzelnen Daten ausgibst, warum machst Du die Berechunngen dann nicht einfach in der entsprechenden Schleife? Oder Du machst einfach eine zweite Abfrage.

LG
 
Hallo,

ich Frage die Daten über eine Prozedur in Excel ab und lasse die Daten in ein Arbeitsblatt eintragen.

Könntest Du mir vor beide Varianten ein Beispiel geben, damit ich das besser nachvollziehen kann?

Vielen Dank im voraus.

Gruß
Jörg
 
Hi,

ich Frage die Daten über eine Prozedur in Excel ab und lasse die Daten in ein Arbeitsblatt eintragen.

Ach, Du bist der mit der Accessdatenbank. Bitte schreibe das DBMS immer dazu, am besten gleich im Titel.
Dann liest Du die Daten also über ein VBA-Makro, oder wie auch immer die Dinger heißen, aus? Dann:

Könntest Du mir vor beide Varianten ein Beispiel geben, damit ich das besser nachvollziehen kann?

Nein, denn damit kenne ich mich, wie gesagt nicht aus.
Das Prinzip sollte aber das gleiche, wie in anderen Sprachen sein. In dem Script muss es ja irgendeine Schleife über das Abfrageergebnis geben? Dann deklarierst Du davor einfach Variablen für Deine Summen und setzt die auf 0. In der Schleife summierst Du dann einfach die Werte des aktuellen Datensatzes drauf, und nach der Schleife füllst Du dann Deine Ergebnisfelder damit. Fertig.
Oder Du machst in dem Makro eine zweite Abfrage, die nur die aggregierten Werte liefert und füllst damit Deine Ergebnisfelder. Auch fertig.

LG
 
Zurück