Nun bei einem Join verknüpfst du Datensätze aus Tabelle A und B über ein Kriterium. Wenn das Kriterium in einer der Tabellen auf mehr als einen Datensatz zutrifft dann multipliziert sich die Anzahl der Datensätze im Ergebnis. Das gleiche gilt für bereits gejointe Tabellen, das Ergebnis multipliziert sich erneut.
Du kannst das natürlich umgehen. Am einfachsten dürfte es sein erst eine Summe zu ermitteln, dann die andere, und dann die beiden Ausgaben zu joinen.
Also mal ungefähr:
[CODE]
SELECT t1.nummer,t1.erlöse,t2.nummer,t2.erlöse
FROM (
Select v.nummer,sum(rt1.erlöse) AS erlöse
From Vertrag v
Inner Join Rechnung1 r1 on v.id1 = r1.id1
Inner Join Rechnungsteil rt1 on r1.id2 = rt1.id2
Group by v.nummer
) t1
FULL OUTER JOIN (
Select v.nummer,sum(rt2.erlöse) AS erlöse
From Vertrag v
Inner Join Rechnung2 r2 on v.id2 = r2.id2
Inner Join Rechnungsteil rt2 on r2.id2 = rt2.id2
Group by v.nummer
) t2
ON t1.nummer = t2.nummer
[/CODE]
Das kann man natürlich noch anders formulieren oder kürzen. Aber deine Tabellennamen und Spaltennamen werfen erstmal Fragen auf. Warum gibt es verschiedene Tabellen für die Entität Rechnung? Auch eine Spalte id2 ist sonderbar. Was passiert bei einer dritten Rechnung? Im Ergebnis sieht es so aus als würdest du lediglich mehrere Rechnungspositionen zu einer Rechnungssumme zusammen führen und mehrere Rechnungen pro Vertrag nicht in mehreren Zeilen (Vertragsnummer,Rechnungsdatum,Rechnungsbetrag und davon zwei Zeilen) haben wollen sondern das Ergebnis davon als Pivot darstellen wollen.