Ich habe diese Tabellen:
Rechnung
---------
ReNr
Datum
Netto
...
MwSt
--------
ReNr
MwStSatz
MwStBetrag
...
Dabei kann es zu einem Rechnungs-Datensatz beliebig viele Datensätze in der MwSt-Tabelle geben. Da es Rechnungen geben kann, die mehere MwSt-Sätze enthalten.
Ich möchte nun die Netto-Summe und MwSt-Summe aller Rechnungen eines Jahre ausgeben. Das mache ich so:
Code:
select sum(R.Netto), sum(M.MwStBetrag)
from Rechnung R
left join MwSt M on (R.ReNr = M.ReNr)
where Datum >= '2020-01-01' and Datum <= '2020-12-31'
Das Problem ist hier nun, dass die Netto-Summe zu hoch ist, da durch den Join der MwSt-Tabelle einige Netto-Beträge der Rechnung doppelt gezählt werden. Wenn es z.B. 2 MwSt-Sätze gibt, erzeut der Join 2 Result-Datensätz. Dabei addiert sum(R.Netto) denn Nettobetrag der *selben* Rechung zwei mal! sum(M.MwStBetrag) addiert in den zwei Datensätzen die beiden MwStBeträge. Das ist ok.
Wie mache ich das richtig?