Nik: Dump

Beitrag lesen

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