Hi, ich habe mir einen Bericht für den Umsatz der letzten 12 Monate erstellt. Dazu im Vergleich die Umsätze des jeweiligen Vorjahres-Monat. Leider funktioniert die Funktion von “Spalten aufsummieren” nicht. Weiß jemand woran das liegen kann?
Hier der Bericht:
SELECT
DATE_FORMAT(r.datum, '%b %Y') AS datum,
FORMAT(SUM(rp.umsatz_netto_einzeln * (rp.menge - IFNULL(gp.menge, 0))), 2, 'de_DE') AS umsatz,
FORMAT((
SELECT SUM(rp2.umsatz_netto_einzeln * (rp2.menge - IFNULL(gp2.menge, 0)))
FROM rechnung_position rp2
LEFT JOIN gutschrift_position gp2 ON rp2.auftrag_position_id = gp2.auftrag_position_id
JOIN rechnung r2 ON rp2.rechnung = r2.id
WHERE r2.waehrung = 'EUR'
AND r2.status <> 'angelegt' AND r2.status <> 'storniert'
AND r2.datum >= DATE_FORMAT(DATE_SUB(r.datum, INTERVAL 1 YEAR), '%Y-%m-01')
AND r2.datum <= LAST_DAY(DATE_SUB(r.datum, INTERVAL 1 YEAR))
AND IF('{PROJEKT}' = '-', 1, '{PROJEKT}' = p.abkuerzung)
), 2, 'de_DE') AS vorjahres_umsatz,
r.waehrung AS waehrung
FROM projekt p
JOIN rechnung r ON r.projekt = p.id
JOIN rechnung_position rp ON r.id = rp.rechnung
LEFT JOIN (
SELECT gp.auftrag_position_id, SUM(gp.menge) AS menge
FROM gutschrift_position AS gp
JOIN gutschrift g ON gp.gutschrift = g.id
WHERE gp.auftrag_position_id <> 0
AND g.status <> 'angelegt' AND g.status <> 'storniert'
GROUP BY auftrag_position_id
) AS gp ON rp.auftrag_position_id = gp.auftrag_position_id
WHERE r.status <> 'angelegt' AND r.status <> 'storniert'
AND r.waehrung = 'EUR' -- Nur Umsätze in EUR berücksichtigen
AND r.datum >= DATE_FORMAT(NOW() - INTERVAL 11 MONTH, '%Y-%m-01') -- Letzte 11 Monate einschließlich des aktuellen Monats
AND r.datum <= LAST_DAY(NOW()) -- Aktueller Monat
AND IF('{PROJEKT}' = '-', 1, '{PROJEKT}' = p.abkuerzung)
GROUP BY DATE_FORMAT(r.datum, '%b %Y'), r.waehrung
ORDER BY r.datum DESC -- Sortierung nach Monaten in absteigender Reihenfolge