Moin, ich habe da mal eine Frage...
stellt euch vor ihr habt 3 Bankkonten auf den an unterschiedlichen Tagen Buchungen drauf erfolgen. Mal auf einem Konto mal auf einem anderen Konto und manchmal auch auf allen dreien.
Wenn ich nun eine Stichtagsanalyse machen möchte, so würde ich mit zum Beispiel den heutigen Tag nehmen und schauen, wie ist der Kontostand auf alle drei Konten. Für mich ist das Logisch, auf der Datenbank sieht es jedoch ein wenig anders aus. Dort sind nur die Bewegungen drauf. Also Anfangsbestand +/- Veränderungen an den jeweiligen Buchungstagen. Damit habe ich also nicht immer ein Stand vom jeden Konto zum heutigen Tag.
Erreichen möchte ich dass ich zu jeden Tag den Endbestand sehe, auch wenn dort keine Buchung erfolgt. Das würde ich mittels LAST_VALUE erreichen. Mit fehlt aber dazu die Anreicherung der Datumsfelder zu jeden Konto da in der Datenbanktabelle schließlich nur steht
Was also würde ich tun?!
In der Theorie würde ich versuchen jedem Konto die fehlenden Tage hinzuzufügen. Nur wie? Ein Cross Join sorgt dafür das jedes Datum mit jeden Tag aus der Datumstabelle "angereichert" wird, was dafür sorgt, dass ich für jede Buchung alle Tage bekomme, mal ganz abgesehen von der Menge ist das auch ein Performance Problem. Wenn ich ein Right Join machen habe ich das Problem das er das nicht auf jeden Konto anwendet.
Wie also setzt man so etwas um wenn man das in einer View und nicht in ein SP erledigen möchte? Oder geht das nur mit einem SP?
stellt euch vor ihr habt 3 Bankkonten auf den an unterschiedlichen Tagen Buchungen drauf erfolgen. Mal auf einem Konto mal auf einem anderen Konto und manchmal auch auf allen dreien.
Wenn ich nun eine Stichtagsanalyse machen möchte, so würde ich mit zum Beispiel den heutigen Tag nehmen und schauen, wie ist der Kontostand auf alle drei Konten. Für mich ist das Logisch, auf der Datenbank sieht es jedoch ein wenig anders aus. Dort sind nur die Bewegungen drauf. Also Anfangsbestand +/- Veränderungen an den jeweiligen Buchungstagen. Damit habe ich also nicht immer ein Stand vom jeden Konto zum heutigen Tag.
KTO 1 | KTO 2 | KTO 3 | |
31.01. | 5 | 7 | |
01.02. | 10 | -5 | 3 |
02.02. | 2 | ||
03.02 | 3 | 4 | |
04.02 | 1 | 5 | |
Endbestand |
Erreichen möchte ich dass ich zu jeden Tag den Endbestand sehe, auch wenn dort keine Buchung erfolgt. Das würde ich mittels LAST_VALUE erreichen. Mit fehlt aber dazu die Anreicherung der Datumsfelder zu jeden Konto da in der Datenbanktabelle schließlich nur steht
KTO | Value | Datum |
1 | 5 | 31.01. |
1 | 10 | 01.02. |
1 | 2 | 02.02. |
1 | 1 | 04.02. |
2 | 7 | 31.01. |
2 | -5 | 01.02. |
2 | 3 | 03.02. |
3 | 3 | 01.02. |
3 | 4 | 03.02. |
3 | 5 | 04.02. |
Was also würde ich tun?!
In der Theorie würde ich versuchen jedem Konto die fehlenden Tage hinzuzufügen. Nur wie? Ein Cross Join sorgt dafür das jedes Datum mit jeden Tag aus der Datumstabelle "angereichert" wird, was dafür sorgt, dass ich für jede Buchung alle Tage bekomme, mal ganz abgesehen von der Menge ist das auch ein Performance Problem. Wenn ich ein Right Join machen habe ich das Problem das er das nicht auf jeden Konto anwendet.
Wie also setzt man so etwas um wenn man das in einer View und nicht in ein SP erledigen möchte? Oder geht das nur mit einem SP?