Zum Inhalt springen

Aggregatfunktion SQL


Shorti

Empfohlene Beiträge

Hallo zusammen,

momentan sitz ich im wahrsten Sinne des Wortes auf dem Schlauch. Ich muss eine (eigentlich einfache?) SQL Abfrage schreiben, aber es fehlt der entscheidende Tipp :floet:

Hier mal die Aufgabe:

"Ermitteln Sie den Bestandswert (Ausdruck: Einzelpreis * Lagerbestand) je Lieferant. Die Lieferanten mit den Nummern 1, 2 und 3 sollen nicht berücksichtigt werden. Ebenso sollen alle Auslaufartikel unberücksichtigt bleiben. Tabelle Artikel"

Hier mein Lösungsansatz:

SELECT A.Lieferanten_Nr, (A.Einzelpreis * A.Lagerbestand) AS Bestandswert

FROM Artikel AS A

WHERE A.Lieferanten_Nr NOT IN (1,2,3);

Soweit so gut. Dummerweise wird momentan noch teilweise ein Lieferant x mal ausgegeben und jedesmal mit unterschiedlichen Bestandswerten, Irgendwie müsste ich doch in die Abfrage noch ein GROUP BY und/oder HAVING reinfrickeln, oder?

Btw: Auslaufartikel werden als Ja/Nein Feld gespeichert.

Anbei eine Übersicht über die Datenbank-Beziehungen (vielleicht hilfts?)

beziehungen.jpg

Vielen Dank für alle erbrachten Mühen :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

erstmal danke für den Tipp, aber so richtig weiter bin ich leider immer noch nicht :hells:

Hänge ich an das, was ich momentan habe, ein GROUP BY dran, spuckt mir Access eine Fehlermeldung aus, mit der ich nicht wirklich was anfangen kann, bzw nicht weiß wie man das lösen kann ^^

SELECT A.Lieferanten_Nr, (A.Einzelpreis * A.Lagerbestand) AS Bestandswert

FROM Artikel AS A

WHERE A.Lieferanten_Nr NOT IN (1,2,3)

GROUP BY A.Lieferanten_Nr;

Dann kommt folgende Fehlermeldung:

"Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck 'A.Einzelpreis*A.Lagerbestand' nicht als Teil der Aggregatfunktion einschließt."

:upps Sowas nennt man wohl Brainlag ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

dir fehlt etwas wichtiges.

der bestandswert ist doch die SUMME von lagerbestand * preis aller artikel.

Acess will alle spalten die nicht teil des aggregats sind in der GROUP BY klausel haben. da du gar keine aggregatfunktion benutzt kommt die meldung.


SELECT A.Lieferanten_Nr, [COLOR="Red"]SUM[/COLOR](A.Einzelpreis * A.Lagerbestand) AS Bestandswert

FROM Artikel AS A

WHERE A.Lieferanten_Nr NOT IN (1,2,3)

GROUP BY A.Lieferanten_Nr;

wie du die auslaufartikel ausschließt sollte ja nicht so problematisch sein

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...