Seite 1 von 1

monatsweise Jahreszusammenfassung von Projektumsätzen

Verfasst: Mi 11. Nov 2015, 12:37
von scientific
Hi Leute!

Ich steh ein wenig auf dem Schlauch...

Ich möchte gerne eine monatsweise Jahresübersicht über meine Projekte machen.

Das soll dann so aussehen

Code: Alles auswählen

Projekt    Jänner    Februar    März    April...
A              2000€      3000€    1000€
B              1500€                   2000€    4500€
C                                         3000€
Ich habe in einer Tabelle die Rechnungen (mit Betrag und Rechnungsdatum und zugehöriger Projekt-ID) und in einer anderen Tabelle den Projektnamen und die Projekt-ID (das ganze ist auf mehrere Tabellen aufgeteilt mit Aufträgen usw... ist ziemlich aufwändig)

Wie müsste der SQL-Befehl im Prinzip aussehen, dass zu einem Projekt in der ensprechenden Monats-Spalte dann der Rechnungsbetrag steht?

Bisher hab ich es nur geschafft, dass zum Projektnamen pro Zeile nur ein Monatsbetrag im entsprechenden Monat steht. Sind z.B. in 3 Monaten Umsätze gewesen, dann hab ich 3 Zeilen mit dem Monatsbetrag in der jeweiligen Monatsspalte.

Code: Alles auswählen

	CASE WHEN "POSIT"."P_Monat" = 1 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "Jänner",
	CASE WHEN "POSIT"."P_Monat" = 2 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "Februar",
	CASE WHEN "POSIT"."P_Monat" = 3 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "März",
	CASE WHEN "POSIT"."P_Monat" = 4 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "April",
	CASE WHEN "POSIT"."P_Monat" = 5 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "Mai",
	CASE WHEN "POSIT"."P_Monat" = 6 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "Juni",
	CASE WHEN "POSIT"."P_Monat" = 7 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "Juli",
	CASE WHEN "POSIT"."P_Monat" = 8 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "August",
	CASE WHEN "POSIT"."P_Monat" = 9 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "September",
	CASE WHEN "POSIT"."P_Monat" = 10 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "Oktober",
	CASE WHEN "POSIT"."P_Monat" = 11 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "November",
	CASE WHEN "POSIT"."P_Monat" = 12 THEN COALESCE ( SUM( "POSIT"."POS_SUMME_NETTO" ), SUM( "Rechnungen"."R_BETRAG_PLAN" )) END "Dezember"
Diese 12 Zeilen müsste ich irgendwie "vereinen"... Hat da zufällig jemand eine Idee?

lg scientific

Re: monatsweise Jahreszusammenfassung von Projektumsätzen

Verfasst: Mi 11. Nov 2015, 21:44
von RobertG
Hallo scientific,

zuerst einmal: Hat die zugrundeliegende Tabelle grundsätzlich nur die Daten von einem Jahr? Eventuell die Datenbasis auf ein Jahr beschränken mittels Ansicht.

Du hast eine Tabelle mit Projekt - Betrag - Datum

Code: Alles auswählen

SELECT SUM("Betrag") FROM "Tabelle" WHERE MONTH("Datum") = 1 AND "Projekt" = 'A'
Zeigt Dir die Summe für den Januar für das Projekt 'A'
Jetzt packst Du das in eine korrelierende Unterabfrage:

Code: Alles auswählen

SELECT DISTINCT "a"."Projekt", 
(SELECT SUM("Betrag") FROM "Tabelle" WHERE MONTH("Datum") = 1 AND "Projekt" = "a"."Projekt") AS "Jänner"
FROM "Tabelle" AS "a"
Das zeigt Dir zu allen Projekten die jeweilige Summe im Januar (Jänner) an.
genauso kannst Du dann auch Februar, März usw. ausweisen.

Gruß

Robert