Bin leider grad nicht an meinem Rechner, sonst könnte ich Dir nen Dump schicken.
Habs mal rekonstruiert, hier ist ein Dump, der dasselbe Ergebnis produziert.
CREATE TABLE IF NOT EXISTS rechnungscontainer (
RechnungenID int(6) NOT NULL AUTO_INCREMENT,
Belegart char(2) DEFAULT 'RG',
PRIMARY KEY (RechnungenID)
) ENGINE=MyISAM;
INSERT INTO rechnungscontainer (RechnungenID, Belegart) VALUES
(1, 'RG'),
(2, 'ST'),
(3, 'GU'),
(4, 'RG'),
(5, 'RG'),
(6, 'RG'),
(7, 'RG'),
(8, 'RG'),
(9, 'RG');
CREATE TABLE IF NOT EXISTS zahlungen (
zahlungenID int(6) NOT NULL AUTO_INCREMENT,
RechnungenID int(6) NOT NULL,
Nettozahlung decimal(12,2) NOT NULL,
USt decimal(4,2) NOT NULL,
Zahlungsdatum date NOT NULL,
PRIMARY KEY (zahlungenID)
) ENGINE=MyISAM;
INSERT INTO zahlungen (zahlungenID, RechnungenID, Nettozahlung, USt, Zahlungsdatum) VALUES
(1, 7, 159.00, 19.00, '2013-05-18');
Und die entsprechende Query:
SELECT
SUM(ze.Nettozahlung
*(CASE
WHEN r.Belegart = 'RE' THEN 1
WHEN r.Belegart = 'GU' THEN (-1)
WHEN r.Belegart = 'ST' THEN (-1)
END) ),
ROUND(SUM(ze.Nettozahlung*(ze.USt/100)
*(CASE
WHEN r.Belegart = 'RE' THEN 1
WHEN r.Belegart = 'GU' THEN (-1)
WHEN r.Belegart = 'ST' THEN (-1)
END) ),2)
FROM zahlungen ze
JOIN rechnungscontainer r ON r.RechnungenID = ze.RechnungenID
WHERE
ze.Zahlungsdatum BETWEEN '2013-05-12' AND '2013-05-22'
AND r.RechnungenID > 3
Nik