Frage

Berichte: SQL Umsatz


Benutzerebene 5
Abzeichen +2

Hi,

ich habe den Umsatzbericht nach Projekt so modifiziert, dass ich die Umsatzzahlen je Monat projektübergreifend angezeigt bekomme.

Mein SQL Statement sieht nun wie folgt aus:

SELECT
 DATE_FORMAT(r.datum,'%m.%Y') AS datum,
 ROUND(SUM(rp.menge-IFNULL(gp.menge,0)),0) AS menge,
 ROUND(SUM(rp.umsatz_netto_einzeln*(rp.menge-IFNULL(gp.menge,0))),2) AS umsatz,
 r.waehrung AS waehrung

FROM rechnung r

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 IF('{VON}'=0,1,r.datum>='{VON}') AND IF('{BIS}'=0,1,r.datum<='{BIS}')

GROUP BY DATE_FORMAT(r.datum,'%m.%Y')

 

Nun möchte ich noch den über die Monate kumulierten Jahresumsatz am Ende der Abfrage anzeigen. Wie lässt sich umsetzen?

Liebe Grüße


7 Antworten

Benutzerebene 7
Abzeichen +5

Hallo @kakacommerce

vielleicht klappt es mit einem UNION ALL im SQL Script.

Damit kannst du in einer SQL Abfrage eine zweite andocken. Diese muss aber die gleiche Anzahl Spalten haben und dort den gleichen Datentyp.

 

Benutzerebene 7
Abzeichen +5

Ich denke auch, du brauchst eine weitere Selektion mit einem gesondertem 
GROUP BY YEAR(r.datum)

Benutzerebene 3
Abzeichen +1

Hier ein Link: https://www.mysqltutorial.org/mysql-group-by.aspx

→ B) Using MySQL GROUP BY with aggregate functions

 

 

 

Benutzerebene 2
Abzeichen +1

Lustig, genau wie oben beschrieben habe ich das auch getan und im Grunde funktioniert alles.

 

Aber, warum sind die Zahlen aus diesem SQL-Befehl etwas höher, als die, die ich im Management Board angezeigt bekomme.

Auch sind die Daten im Modul Umsatzstatistik etwas anders und entsprechen dem Wert aus dem Management Board.

Ausgewählt habe ich Rechnung und Gutschrift.

Sowie angelegt, freigegeben, versendet, abgeschlossen und storniert.

Benutzerebene 7
Abzeichen +5

Angelegt sind Entwürfe. Die sollten eigentlich in keiner Auswertung vorkommen, haben ja auch noch keine Belegnummer. 

Ich würde erst ab Status freigeben im Bericht ausgeben lassen. Passen die Zahlen dann? 

Benutzerebene 2
Abzeichen +1

Ich habe nun ein paar Tests gemacht und scheinbar die Unstimmigkeit gefunden.

 

Im Select oben werden leider die Gutschriften nicht richtig verarbeitet. Habe das in unserem System reproduzieren können. Es fehlen einfach die jeweilig erstellten Gutschriften. 

Könnte ein Fehler im SQL sein. Fakt ist, der ermittelte Wert des SQLs von oben wird immer höher sein, als der eigentlich Umsatz, sofern Gutschriften vorliegen.

Benutzerebene 7
Abzeichen +5

Der Bericht setzt rp_auftag_position_id mit gp_auftrag_position_id gleich.

Was passiert aber mit Gutschriften, die pauschal einen Betrag gutschreiben, z. B. ein Nachlass, der nicht positionsbezogen ist? Diese haben keine auftrag_position_id. 

Habt ihr so was, tauchen diese Gutschriften auf, oder könnte das die Differenz erklären? 

Antworten