MSSQL konsolidieren von gleichen Datensätzen

Termos

Mitglied
Servus Community,


folgendes SQL-Problem zum Füllen eines OLAP-Cubes.
Ich habe das Problem zum veranschaulichen auf 2 Tabellen minimiert.

Tabelle A Mitarbeiter
PersNummer | Name
11 | A
12 | B
13 | C
14 | D



Tabelle B Urlaub
PersNummer | Datum | Tagegenommen
11 | 01.2016 | 5
12 | 01.2016 | 2
13 | 01.2016 | 0
14 | 01.2016 | 0

11 | 02.2016 | 5
12 | 02.2016 | 0
13 | 02.2016 | 0
14 | 02.2016 | 0


Was soll raus kommen

PersNummer | Datum | Tagegenommen

11 | 01.2016 | 5
12 | 01.2016 | 2
13 | 01.2016 | 0
14 | 01.2016 | 0
11 | 02.2016 | 10 (5+5)
12 | 02.2016 | 2 (2+0)
13 | 02.2016 | 0
14 | 02.2016 | 0

Meine Herangehensweise war es das ganze unter Nutzung von:

ROW_NUMBER() Over (ORDER BY Annr, AbrMon , AbrJahr DESC) AS ROW für Tabelle A und B
[....]
WHERE A.row <= B.row

Dabei werden allerdings alle Daten im ersten Monat verdoppelt ....

ROLLUP erzeugt eine neue Spalte, da das Ergebnis in einen Cube kommen soll ist dies nicht Zielführend.


Evtl. hat ja jemand eine Idee, vielen Dank im Voraus ;)
 
Warum so kompliziert. Ein einfaches Subselect im SELECT reicht um das Gesamttotal bis jetzt zu berechnen.

Mein Test bei SQLFiddle: http://sqlfiddle.com/#!9/8b095/2
SQL:
select
  m.persnummer,
  m.name
  u.datum,
  u.tagegenommen,
  (
      select sum(p.tagegenommen) 
      from urlaub p 
      where p.persnummer = u.persnummer
      and p.datum <= u.datum
  ) AS tot
from 
  mitarbeiter m
  left join urlaub u
    on m.persnummer = u.persnummer
 
Zurück