Hallo,
ich bin gerade dabei eine kleine Jahresauswertung zu programmieren und stecke irgendwie bei der Abfrage fest und suche mal im Forum nach Hilfe.
Bei der Auswertung ist es wichtig die Umsatzzahlen pro Mitarbeiter zu ermitteln und in einem Chart als Top 10 darzustellen. Das klappt soweit auch ganz gut.
Zum besseren Verständnis hier mal der Aufbau meiner DB, die bisherige Abfrage und das Ergebnis:
Datenbank hat folgenden Aufbau:
id, Mitarbeiter, Betrag, Datum
Datensätze sind wie folgt in der DB vorhanden:
1, "abc", 20.00, 01.01.2008
2, "abc", 10.00, 01.03.2008
3, "abc", 40.00, 02.01.2007
4, "abc", 20.00, 05.04.2007
5, "xyz", 5.00, 03.04.2008
6, "xyz", 20.00, 01.02.2008
7, "xyz", 30.00, 05.02.2007
8, "efg", 10.00, 01.03.2008
9, "efg", 36.00, 02.03.2008
10, "efg", 24,00, 03.03.2008
usw...
Die Jahresauswertung (Top 10) für das Jahr 2008 wird mit folgender
SQL Anweisung herausgefiltert:
select top 10 Umsatz_Gesamt.* from
(select umsatz_2007.Mitarbeiter, sum(umsatz_2008.betrag) as Gesamt_Betrag_2008,
sum(case month(Umsatz_2008.datum) when 1 then Umsatz_2008.betrag else 0 end) as Januar_2008,
sum(case month(Umsatz_2008.datum) when 2 then Umsatz_2008.betrag else 0 end) as Februar_2008,
sum(case month(Umsatz_2008.datum) when 3 then Umsatz_2008.betrag else 0 end) as Maerz_2008,
sum(case month(Umsatz_2008.datum) when 4 then Umsatz_2008.betrag else 0 end) as April_2008,
sum(case month(Umsatz_2008.datum) when 5 then Umsatz_2008.betrag else 0 end) as Mai_2008,
sum(case month(Umsatz_2008.datum) when 6 then Umsatz_2008.betrag else 0 end) as Juni_2008,
sum(case month(Umsatz_2008.datum) when 7 then Umsatz_2008.betrag else 0 end) as Juli_2008,
sum(case month(Umsatz_2008.datum) when 8 then Umsatz_2008.betrag else 0 end) as August_2008,
sum(case month(Umsatz_2008.datum) when 9 then Umsatz_2008.betrag else 0 end) as September_2008,
sum(case month(Umsatz_2008.datum) when 10 then Umsatz_2008.betrag else 0 end) as Oktober_2008,
sum(case month(Umsatz_2008.datum) when 11 then Umsatz_2008.betrag else 0 end) as November_2008,
sum(case month(Umsatz_2008.datum) when 12 then Umsatz_2008.betrag else 0 end) as Dezember_2008
from umsatz as Umsatz_2008
where Umsatz_2008.mitarbeiter not is null AND year(Umsatz_2008.datum) = 2008
group by Umsatz_2008.mitarbeiter
) as Umsatz_Gesamt
order by Gesamt_Betrag_2008 DESC
Als Ergebnissatz bekomme ich dann folgendes:
Mitarbeiter | Gesamt_Betrag_2008 | Januar_2008 | Februar_2008 | Maerz_2008 | April_2008 | usw...
efg | 70.00 | 0 | 0 | 70.00 | 0 | ...
abc | 30.00 | 20.00 | 0 | 10.00 | 0 | ...
xyz | 25.00 | 0 | 20.00 | 0 | 5.00 | ...
Nun möchte ich anhand dieser Top 10 auch noch die Vorjahreswerte mit auswerten, aber da stecke ich einfach fest. Vielleicht hat jemand im Forum eine Idee, die mir weiterhelfen könnte!!?? Eine weitere Problematik steckt in der Tatsache, dass der Mitarbeiter "efg" im Vorjahr noch gar nicht beschäftigt war.
Ich bin für jeden Tipp dankbar!
Schönen Gruß
Andreas
ich bin gerade dabei eine kleine Jahresauswertung zu programmieren und stecke irgendwie bei der Abfrage fest und suche mal im Forum nach Hilfe.
Bei der Auswertung ist es wichtig die Umsatzzahlen pro Mitarbeiter zu ermitteln und in einem Chart als Top 10 darzustellen. Das klappt soweit auch ganz gut.
Zum besseren Verständnis hier mal der Aufbau meiner DB, die bisherige Abfrage und das Ergebnis:
Datenbank hat folgenden Aufbau:
id, Mitarbeiter, Betrag, Datum
Datensätze sind wie folgt in der DB vorhanden:
1, "abc", 20.00, 01.01.2008
2, "abc", 10.00, 01.03.2008
3, "abc", 40.00, 02.01.2007
4, "abc", 20.00, 05.04.2007
5, "xyz", 5.00, 03.04.2008
6, "xyz", 20.00, 01.02.2008
7, "xyz", 30.00, 05.02.2007
8, "efg", 10.00, 01.03.2008
9, "efg", 36.00, 02.03.2008
10, "efg", 24,00, 03.03.2008
usw...
Die Jahresauswertung (Top 10) für das Jahr 2008 wird mit folgender
SQL Anweisung herausgefiltert:
select top 10 Umsatz_Gesamt.* from
(select umsatz_2007.Mitarbeiter, sum(umsatz_2008.betrag) as Gesamt_Betrag_2008,
sum(case month(Umsatz_2008.datum) when 1 then Umsatz_2008.betrag else 0 end) as Januar_2008,
sum(case month(Umsatz_2008.datum) when 2 then Umsatz_2008.betrag else 0 end) as Februar_2008,
sum(case month(Umsatz_2008.datum) when 3 then Umsatz_2008.betrag else 0 end) as Maerz_2008,
sum(case month(Umsatz_2008.datum) when 4 then Umsatz_2008.betrag else 0 end) as April_2008,
sum(case month(Umsatz_2008.datum) when 5 then Umsatz_2008.betrag else 0 end) as Mai_2008,
sum(case month(Umsatz_2008.datum) when 6 then Umsatz_2008.betrag else 0 end) as Juni_2008,
sum(case month(Umsatz_2008.datum) when 7 then Umsatz_2008.betrag else 0 end) as Juli_2008,
sum(case month(Umsatz_2008.datum) when 8 then Umsatz_2008.betrag else 0 end) as August_2008,
sum(case month(Umsatz_2008.datum) when 9 then Umsatz_2008.betrag else 0 end) as September_2008,
sum(case month(Umsatz_2008.datum) when 10 then Umsatz_2008.betrag else 0 end) as Oktober_2008,
sum(case month(Umsatz_2008.datum) when 11 then Umsatz_2008.betrag else 0 end) as November_2008,
sum(case month(Umsatz_2008.datum) when 12 then Umsatz_2008.betrag else 0 end) as Dezember_2008
from umsatz as Umsatz_2008
where Umsatz_2008.mitarbeiter not is null AND year(Umsatz_2008.datum) = 2008
group by Umsatz_2008.mitarbeiter
) as Umsatz_Gesamt
order by Gesamt_Betrag_2008 DESC
Als Ergebnissatz bekomme ich dann folgendes:
Mitarbeiter | Gesamt_Betrag_2008 | Januar_2008 | Februar_2008 | Maerz_2008 | April_2008 | usw...
efg | 70.00 | 0 | 0 | 70.00 | 0 | ...
abc | 30.00 | 20.00 | 0 | 10.00 | 0 | ...
xyz | 25.00 | 0 | 20.00 | 0 | 5.00 | ...
Nun möchte ich anhand dieser Top 10 auch noch die Vorjahreswerte mit auswerten, aber da stecke ich einfach fest. Vielleicht hat jemand im Forum eine Idee, die mir weiterhelfen könnte!!?? Eine weitere Problematik steckt in der Tatsache, dass der Mitarbeiter "efg" im Vorjahr noch gar nicht beschäftigt war.
Ich bin für jeden Tipp dankbar!
Schönen Gruß
Andreas
Comment