ich versuche hier etwas mit MDX zum laufen zu bekommen, oder eher gesagt mit berechneten Elementen. Dabei wird der SQL Server 2005 Standard Edition benutzt.
Mein Arbeitscube umfasst momentan 14 Dimensionen, das ist jedoch für diesen Sachverhalt nicht besonders wichtig, da das aktuelle Measure nur 2 Dimesionen berührt.
Dimension 1 - Datum (Jahr, Monat, Tag)
Dimension 2- Kontonummer
Measure (Soll, Haben)
Faktentabelle( Kontonummer, soll, haben, datum ...)
In der zugrundeliegenden Faktentabelle sind alle Buchungen der Aktivseite einer Bilanz seit 2001 abgespeichert. Um den aktuellen Saldo zu errechnen ist es nötig die Summe des Solls mit der Summe des Habens zu substrahieren.
Also einfach gesagt Sum(Soll)-Sum(Haben).
Das Problem ist jetzt für mich das in den einzelnen Rückgabewerten im Cube immer nur die aktuellen Buchungen berücksichtigt werden.
Wenn ich also für 04.2009 eine Abfrage mache dann erhalte ich einen falschen Saldo, weil nur die Buchungen mit eingerechnet werden die im April stattfanden. Das ist aber inhaltlich falsch.
Ich bräuchte die Summe aller Buchungen bis einschliesslich April. Jedoch weiß ich nicht wie ich dies in MDX anstelle.
Wenn ich folgende Abfrage mache (04.2009 Konto 1851), dann kommt ein falscher Wert heraus, weil die vorhergehenden Buchungssätze nicht mit drin sind.
SELECT
(
[Measures].[Haben - FACT BILANZKONTEN],
[DIM DATUM].[JAHR].&[2009],
[DIM DATUM].[MONAT].&[4],
[DIM BILANZKONTEN].[DIM BILANZKONTEN].&[1851]
) on 0
from [cube]
Und wenn ich
SELECT
(
[Measures].[Haben - FACT BILANZKONTEN],
[DIM DATUM].[JAHR].[ALL]
[DIM BILANZKONTEN].[DIM BILANZKONTEN].&[1851]
) on 0
from [cube]
abfrage, dann erhalte ich alle jemals getätigten Habenbuchungen, jedoch fehlt die Einschränkung auf den April (also bis wann ich diese Summe haben möchte).
In der Auswertung möchte ich dann anschliessend wie in einer Exceltabelle die 12 Monate des Jahres haben und den Verlauf der Bilanzsalden.
mit ganz normalem SQL würde es so aussehen
SELECT Sum(Soll)-Sum(Haben) From Faktentabelle Where Belegdatum<01.05.2009
bzw. wenn ich nur die Habensumme möchte
SELECT Sum(Haben) From Faktentabelle Where Belegdatum<01.05.2009
Ich stell mich nur zu blöd an dieses einfache Statement in MDX abzubilden, es muss doch gehen.
Für feste Werte bekomme ich es schon hin, ich möchte es aber dynamisch. D.h. ich kann den Cube ja über bestimmte Zeiträume betrachten und für diese möchte ich die Bilanzsumme.
Gruß
tavoc
Dieser Beitrag wurde von tavoc bearbeitet: 08. Juni 2009 - 14:55