Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Mehrjahresvergleich

Begonnen von Michael Wulf, September 01, 2014, 22:10:24

⏪ vorheriges - nächstes ⏩

Michael Wulf

Guten Tag zusammen,

Ich möchte eine Datenbank programmieren, die folgende Tabellen enthält:

Tabelle1
firmennameID
Firmenname

tabelle2
ID (primär)
FirmennameID (Verknüpfung)
Jahr
Umsatz
Wareneinsatz
Rohertrag
Gewinn

Nun möchte ich folgendes berechnen:

Ich erfasse für die Firma A die Jahre 1 bis 3 jeweils mit Umsatz, Wareneinsatz und Gewinn. Nun möchte ich die drei Jahre vergleichen (jeweils zum Vorjahr) und Berechnungen durchführen

A: Veränderung Umsatz zum Vorjahr in %
B: Verhältnis Gewinn zu Umsatz in %
C: Umsatz - Wareneinsatz (entspricht Rohertrag) in EUR und Ergebnis in %

Erstelle ich dazu einen Bericht oder Abfrage? Muss ich ggf. Weitere Felder für die % Werte in der Tabelle erstellen? Wie berechne ich Werte aus verschiedenen Datensatzsätzen insbesondere wenn das Gleiche für Unternehmen B etc. Erfolgen soll ?

Vielen Dank für Tips und Anregungen.
Michael 

MaggieMay

Hallo,

mein Vorschlag wäre, die Datensätze mit Hilfe einer Union-Abfrage zusammenzuführen.
Beispiel:Select FirmennameID, Jahr As J1, Umsatz As U1, Wareneinsatz As W1, Gewinn AS G1, Null As J2, Null As U2, Null As W2, Null As G2, Null As J3, Null As U3, Null As W3, Null As G3
From tabelle2
Where Jahr = 2011
UNION
Select FirmennameID, Null, Null, Null, Null, Jahr, Umsatz, Wareneinsatz, Gewinn, Null, Null, Null, Null
From tabelle2
Where Jahr = 2012
UNION
Select FirmennameID, Null, Null, Null, Null, Null, Null, Null, Null, Jahr, Umsatz, Wareneinsatz, Gewinn
From tabelle2
Where Jahr = 2013
und folgendermaßen zusammenzufassen:Select FirmennameID, Max(J1) As Jahr1, Max(U1) As Umsatz1, Max(W1) As Wareneinsatz1, Max(G1) As Gewinn1, Max(J2) As ..., Max(U2), Max(W2), Max(G2), Max(J3), Max(U3), Max(W3), Max(G3)
From abf_uni
Group By FirmennameID
Die Vergabe sinnvoller Aliasnamen für die berechneten Felder sollte dabei noch auf alle Felder erweitert werden.
Freundliche Grüße
MaggieMay

Walter P.

Hallo,

und wenn Du das Basisjahr in einer weiteren Tabelle auslagerst brauchst Du im nächsten Jahr den Code nicht zu ändern.
z.B. 2013 könnte dann Basisjahr - 1 sein.

Gruß
office2010

MaggieMay

Um den Code variabel zu halten, könnte man auch das Tagesdatum einsetzen, bspw. so:Where Jahr = Year(Date()) -3
Freundliche Grüße
MaggieMay

Walter P.

Hallo MaggieMay,

im Prinzip gebe ich Dir Recht wenn Du nur für Dich selbst arbeitest.
Aber Tipp aus der Praxis: In einer Firma haben Kollegen und vor allem Chefs die abenteuerlichsten Ideen und wünschen sich schon mal Auswertungen für Zeiträume die weiter zurückliegen (oft genug erlebt).
Schwierig wird es auch um den Jahreswechsel herum.

Gruß
office2010

MaggieMay

OK, jetzt ist der Groschen gefallen. Du gehst davon aus, dass das Basisjahr zum Zweck der Auswertung vorher beliebig festgelegt werden kann - stimmt's?
Freundliche Grüße
MaggieMay

Walter P.

Hallo,

genau.
Das Feld kann dann auch noch für weitere Auswertungen genutzt werden. Die Möglichkeiten sind dann vielfältig.

Gruß
office2010