Einzelnen Beitrag anzeigen

BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
850 Beiträge
 
Delphi 11 Alexandria
 
#1

Join: Datensätze sind mehrfach vorhanden, sollen sie aber nicht

  Alt 1. Feb 2021, 08:25
Datenbank: Firebird • Version: 3.x • Zugriff über: IBDAC
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?
  Mit Zitat antworten Zitat