Skip to content
Advertisement

SQL SUM of Article-Prizes

i’m an absolute newbie in SQL and want to add up all the Sums of the Articles * ordered amount to a final prize. I tried to calculate the Articles * amount to the “Gesamtpreis” and then the Method SUM() to sum up all the “Gesamtpreis”. Dont worry, the SQL-Code is auto-generated by Access.

Main Problem:

[Einzelpreis]*[Anzahl] AS Gesamtpreis, SUM(Gesamtpreis) AS FinalPreis

Whole Code:

SELECT Kunden.Kundennr
    , Kunden.Nachname
    , Kunden.Vorname
    , Kunden.Straße
    , Kunden.PLZ
    , Kunden.Ort
    , Bestellung.Bestellnr
    , Bestellung.Bestelldatum
    , Bestelldetails.Artikelnr
    , Bestelldetails.Anzahl
    , Artikel.Artikelname
    , Artikel.Einzelpreis
    , Artikel.Hersteller
    , [Einzelpreis]/119*19 AS MwStPreis
    , [Einzelpreis]-[MwStPreis] AS EinzelpreisNetto
    , [Einzelpreis]*[Anzahl] AS Gesamtpreis
    , SUM(Gesamtpreis) AS FinalPreis
FROM Kunden INNER JOIN
    (
        (Artikel INNER JOIN
            Bestelldetails ON Artikel.Artikelnr = Bestelldetails.Artikelnr
          ) INNER JOIN Bestellung ON Bestelldetails.Bestelldetailnr = Bestellung.Bestelldetailnr
    ) ON Kunden.Kundennr = Bestellung.Kundennr;

Advertisement

Answer

When using an aggregate function (e.g. SUM(), COUNT(), etc.), you need to group by every other field which is not part of an aggregate function in that query. For your case, it would be like this:

SELECT Kunden.Kundennr
    , Kunden.Nachname
    , Kunden.Vorname
    , Kunden.Straße
    , Kunden.PLZ
    , Kunden.Ort
    , Bestellung.Bestellnr
    , Bestellung.Bestelldatum
    , Bestelldetails.Artikelnr
    , Bestelldetails.Anzahl
    , Artikel.Artikelname
    , Artikel.Einzelpreis
    , Artikel.Hersteller
    , [Einzelpreis]/119*19 AS MwStPreis
    , [Einzelpreis]-[MwStPreis] AS EinzelpreisNetto
    , [Einzelpreis]*[Anzahl] AS Gesamtpreis
    , SUM([Einzelpreis]*[Anzahl]) AS FinalPreis
FROM Kunden INNER JOIN
    (
        (Artikel INNER JOIN
            Bestelldetails ON Artikel.Artikelnr = Bestelldetails.Artikelnr
          ) INNER JOIN Bestellung ON Bestelldetails.Bestelldetailnr = Bestellung.Bestelldetailnr
    ) ON Kunden.Kundennr = Bestellung.Kundennr
GROUP BY Kunden.Kundennr
    , Kunden.Nachname
    , Kunden.Vorname
    , Kunden.Straße
    , Kunden.PLZ
    , Kunden.Ort
    , Bestellung.Bestellnr
    , Bestellung.Bestelldatum
    , Bestelldetails.Artikelnr
    , Bestelldetails.Anzahl
    , Artikel.Artikelname
    , Artikel.Einzelpreis
    , Artikel.Hersteller
    , [Einzelpreis]/119*19
    , [Einzelpreis]-[MwStPreis]

EDIT: If you are looking for the SUM of all entries to appear on each entry, then you could do that like this:

SELECT Kunden.Kundennr
    , Kunden.Nachname
    , Kunden.Vorname
    , Kunden.Straße
    , Kunden.PLZ
    , Kunden.Ort
    , Bestellung.Bestellnr
    , Bestellung.Bestelldatum
    , Bestelldetails.Artikelnr
    , Bestelldetails.Anzahl
    , Artikel.Artikelname
    , Artikel.Einzelpreis
    , Artikel.Hersteller
    , [Einzelpreis]/119*19 AS MwStPreis
    , [Einzelpreis]-[MwStPreis] AS EinzelpreisNetto
    , [Einzelpreis]*[Anzahl] AS Gesamtpreis
    , [Total].[Total] AS [FinalPreis]

FROM (((((Kunden
INNER JOIN Bestellung ON Kunden.Kundennr = Bestellung.Kundennr)
INNER JOIN Bestelldetails ON Bestellung.Bestelldetailnr = Bestelldetails.Bestelldetailnr)
INNER JOIN Artikel ON Bestelldetails.Artikelnr = Artikel.Artikelnr)
INNER JOIN (

    SELECT Kunden.Kundennr, 1 AS [Key]
    FROM Kunden

) AS [Joiner] ON Kunden.Kundennr = [Joiner].Kundennr)
INNER JOIN (

    SELECT 1 AS [Key], SUM(Artikel.Einzelpreis*Bestelldetails.Anzahl) AS [Total]
    FROM Artikel
    INNER JOIN Bestelldetails ON Artikel.Artikelnr = Bestelldetails.Artikelnr

) AS [Total] ON [Joiner].[Key] = [Total].[Key])

EDIT: If you are looking for the sum of entries for each Kunden:

SELECT Kunden.Kundennr
    , Kunden.Nachname
    , Kunden.Vorname
    , Kunden.Straße
    , Kunden.PLZ
    , Kunden.Ort
    , Bestellung.Bestellnr
    , Bestellung.Bestelldatum
    , Bestelldetails.Artikelnr
    , Bestelldetails.Anzahl
    , Artikel.Artikelname
    , Artikel.Einzelpreis
    , Artikel.Hersteller
    , [Einzelpreis]/119*19 AS MwStPreis
    , [Einzelpreis]-[MwStPreis] AS EinzelpreisNetto
    , [Einzelpreis]*[Anzahl] AS Gesamtpreis
    , [Total].[Total] AS [FinalPreis]

FROM ((((Kunden
INNER JOIN Bestellung ON Kunden.Kundennr = Bestellung.Kundennr)
INNER JOIN Bestelldetails ON Bestellung.Bestelldetailnr = Bestelldetails.Bestelldetailnr)
INNER JOIN Artikel ON Bestelldetails.Artikelnr = Artikel.Artikelnr)
INNER JOIN (

    SELECT Kunden.Kundennr, SUM(Artikel.Einzelpreis*Bestelldetails.Anzahl) AS [Total]
    FROM (((Kunden
    INNER JOIN Bestellung ON Kunden.Kundennr = Bestellung.Kundennr)
    INNER JOIN Bestelldetails ON Bestellung.Bestelldetailnr = Bestelldetails.Bestelldetailnr)
    INNER JOIN Artikel ON Bestelldetails.Artikelnr = Artikel.Artikelnr)
    GROUP BY Kunden.Kundennr

) AS [Total] ON Kunden.Kundennr = [Total].Kundennr)

EDIT: If you are looking for the sum of entries for each Kunden and Bestellung:

SELECT Kunden.Kundennr
    , Kunden.Nachname
    , Kunden.Vorname
    , Kunden.Straße
    , Kunden.PLZ
    , Kunden.Ort
    , Bestellung.Bestellnr
    , Bestellung.Bestelldatum
    , Bestelldetails.Artikelnr
    , Bestelldetails.Anzahl
    , Artikel.Artikelname
    , Artikel.Einzelpreis
    , Artikel.Hersteller
    , [Einzelpreis]/119*19 AS MwStPreis
    , [Einzelpreis]-[MwStPreis] AS EinzelpreisNetto
    , [Einzelpreis]*[Anzahl] AS Gesamtpreis
    , [Total].[Total] AS [FinalPreis]

FROM ((((Kunden
INNER JOIN Bestellung ON Kunden.Kundennr = Bestellung.Kundennr)
INNER JOIN Bestelldetails ON Bestellung.Bestelldetailnr = Bestelldetails.Bestelldetailnr)
INNER JOIN Artikel ON Bestelldetails.Artikelnr = Artikel.Artikelnr)
LEFT JOIN (

    SELECT Kunden.Kundennr, Bestellung.Bestellnr, SUM(Artikel.Einzelpreis*Bestelldetails.Anzahl) AS [Total]
    FROM (((Kunden
    INNER JOIN Bestellung ON Kunden.Kundennr = Bestellung.Kundennr)
    INNER JOIN Bestelldetails ON Bestellung.Bestelldetailnr = Bestelldetails.Bestelldetailnr)
    INNER JOIN Artikel ON Bestelldetails.Artikelnr = Artikel.Artikelnr)
    GROUP BY Kunden.Kundennr, Bestellung.Bestellnr

) AS [Total] ON Kunden.Kundennr = [Total].Kundennr AND Bestellung.Bestellnr = [Total].Bestellnr)
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement