Hallo,
Dieses
Gewünschte Ergebnis:
Konto: 254
Datum Fällig ID Betrag Buchungstext
14.12.2012 21.12.2012 2 1000 RG-256897
15.12.2012 -250 Buchungstext 3OP-Restbetrag 750 inkl. 19% MwSt.
entspricht aber nicht unbedingt einer regulaeren relationalen Datenstruktur. Und damit ist es quasi unmoeglich dieses Ergebnis als Ergebnis einer einzigen Abfrage zu produzieren.
Oder meinst du
OP-Restbetrag 750 inkl. 19% MwSt.
als Ergebnis?
Das waere dann ja noch recht gut moeglich. Zusammen mit RGID und Konto.
Am Beispiel von RGID = 4 (das mittlere Beispiel).
SELECT
r.RGID
, r.RGNummer
, r.DATUM
, DATEADD(dd, r.Faellig_in_Tagen, r.DATUM) AS Faelligkeit_Datum
, r.BETRAG AS Betrag_Faellig
, SUM(z.Brutto) AS Brutto_Gezahlt
, r.BETRAG - SUM(z.Brutto) AS Noch_Offen
FROM rechnungen r
INNER JOIN zahlungen z ON r.RGID = z.RGID
WHERE r.RGID = 4
GROUP BY
r.RGID
, r.RGNummer
, r.DATUM
, DATEADD(dd, r.Faellig_in_Tagen, r.DATUM) AS Faelligkeit_Datum
, r.BETRAG;
Was kommt da denn raus?
Deine Zahlungstabelle laesst ein Datum vermissen. Wie kommst du sonst auf den 15.12. im ersten Beispiel? Das "bezahlt" Flag is auch ueberfluessig, da du dieses herausbekommst wenn der "Noch_Offen" Betrag <= 0 ist.
Deine Skonto-Behandlung ist falsch. Grundsaetzlich wird Skonto (wenn es ueberhaupt gewaehrt wird) auf eine bestimmte Faelligkeit gewaehrt und auf den Rechnungsbetrag. Ob die Zahlungen dann mit oder ohne Skonto gemacht wurden is schnurz. Es bleibt ggf ein offener Posten wenn nur ein Teil bezahlt wurde oder (in Hoehe des Skonto) wenn die Skonto Frist ueberschritten wurde. Dazu brauchst du dann aber auch ein Datum bei zahlungen um zu sehen ob die Summe der Zahlungen innerhalb der Skontofrist auch der Rechnungssumme abzueglich Skonto entspricht.
Darueberhinaus (was auch schon festgestellt wurde) ist die Behandlung des Faelligkeitsdatums suboptimal.
Bitte, jetzt seid Ihr gefragt.
Aha .. und fuer dich heisst es jetzt: Bitte zur Kasse und zahlen. :-)
Ciao, Frank