Generierung einer Zeitreihe plus prozentuale Veränderung

19/01/2010 - 21:41 von Andreas | Report spam
Hallo zusammen,

wie gehe ich am besten folgende Problemstellung an:
Ich habe eine Tabelle mit Kontostànden zu einem jeweils bestimmten
Datum (Spalte "datDate" und "Running Balance"). Ich möchte den
Kontostand zum jeweiligen Monatsultimo in einer neuen Abfrage auslesen
und so eine neue Zeitreihe erstellen.

Es gibt jedoch einige Einschrànkungen:
1. Es gibt nicht notwendigerweise eine Buchung zu jedem Monatsultimo.
2. Es kann Monate ohne Buchung geben
Daraus folgt, ich brauche entweder die Buchung zum Monatsultimo, oder
wenn diese nicht verfügbar ist, die letzt verfügbare Buchung, also
z.B. vom 17. eines Monats, wenn danach keine weitere Buchung kommt. In
der neuen Zeitreihe soll dann jedoch als Datum immer der Monatsultimo
als Datumswert erscheinen.

Wenn diese neue Zeitreihe generiert ist, brauche ich die prozentuale
Wertverànderung zum Vormonat, d.h. =Kontostand aktueller Monat
dividiert durch Kontostand Vormonat minus 1. Für den ersten Monat in
der Zeitreihe ist dieser Wert nicht verfügbar bzw. betràgt Null. Die
beiden Spalten dienen dann als Grundlage für ein Diagramm.

Wie löse ich das innerhalb einer Abfrage?

Gruß
Andreas
 

Lesen sie die antworten

#1 Stefan Hoffmann
20/01/2010 - 11:22 | Warnen spam
hallo Andreas,

On 19.01.2010 21:41, Andreas wrote:
Ich habe eine Tabelle mit Kontostànden zu einem jeweils bestimmten
Datum (Spalte "datDate" und "Running Balance").


Das ist eigentlich sehr unschön, da du berechenbare Werte speicherst.

Ich möchte den
Kontostand zum jeweiligen Monatsultimo in einer neuen Abfrage auslesen
und so eine neue Zeitreihe erstellen.


Das ist für mich nicht eindeutig. Möchtest du eine parameterisierte
Abfrage, welche ein Ergebnis für ein Datum berechnet, oder möchtest du
eine Abfrage, welche die Ergebnisse für das ganze Jahr berechnet? Oder
möchtest du eine Abfrage, welche alle Ergebnis bis zu einem Datum berechnet?

Prinzipiell ist die Berechnung einfach für jeden Einzelwert auf den
Rohdaten:

SELECT Sum([Betrag])
FROM [Kontobewegung]
WHERE [Datum] <= #2010-01-31#;

Ansonsten mit deiner Tabelle:

SELECT TOP 1 *
FROM [Kontostand]
WHERE [Datum] < #2010-02-01#
ORDER BY [Datum] DESC;

Wenn diese neue Zeitreihe generiert ist, brauche ich die prozentuale
Wertverànderung zum Vormonat, d.h. =Kontostand aktueller Monat
dividiert durch Kontostand Vormonat minus 1. Für den ersten Monat in
der Zeitreihe ist dieser Wert nicht verfügbar bzw. betràgt Null. Die
beiden Spalten dienen dann als Grundlage für ein Diagramm.

Wie löse ich das innerhalb einer Abfrage?


Hardcore mit Unterabfragen und Parameter:

SELECT TOP 1
(SELECT TOP 1 *
FROM [Kontostand]
WHERE [Datum] < DateSerial([Jahr], 2, 1)
ORDER BY [Datum] DESC) AS [Jan],
(SELECT TOP 1 *
FROM [Kontostand]
WHERE [Datum] < DateSerial([Jahr], 3, 1)
ORDER BY [Datum] DESC) AS [Feb],
...
FROM [Kontostand]
ORDER BY [Datum] DESC;



mfG

Access-FAQ http://www.donkarl.com/
KnowHow.mdb http://www.freeaccess.de
Newbie-Info http://www.doerbandt.de/Access/Newbie.htm

Ähnliche fragen