Einzelnen Beitrag anzeigen

DCoderHH

Registriert seit: 4. Feb 2015
Ort: Hamburg
84 Beiträge
 
Delphi 10 Seattle Professional
 
#1

SQL: Kosten anteilig auf Jahre aufteilen

  Alt 8. Mär 2018, 08:37
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC
Ich habe Nutzungszeiten und Kosten von Gegenständen. Die Kosten sollen nun pro Jahr dargestellt werden. Dabei ist zu beachten, dass die Nutzungszeiten über keine oder beliebig viele Jahresgrenzen gehen können. Die Kosten sollen prozentual nach der Nutzung in einem Jahr aufgeteilt werden. D.h. wenn z.B. 20 % des Nutzungszeitraumes eines Gegenstandes im Jahr 2018 liegen, sollen auch 20% seiner Kosten diesem Jahr zugeordnet werden.


Ich habe diese Tabelle:

Code:
Nutzungszeiten
--------------
ID      Integer
Von     Date
Bis     Date
Kosten  Numeric(18,4)
Mit diesen Beispieldaten:

Code:
ID  VON         BIS         KOSTEN
1   01.07.2017  01.08.2018  120
2   22.12.2017  10.01.2018  100
3   07.02.2019  09.03.2021  500
Und möchte diese Auswertung erhalten:

Code:
JAHR  KOSTENANTEIL  (Erklärung)
2017  170           (100 % von ID1 120 + 50 % von ID2 100)
2018   50           (50 % von ID2 100)
2019  215           (43 % von ID3 500) 328 Tage / 762 Tage = 43 %
2020  240           (48 % von ID3 500) 366 Tage / 762 Tage = 48 %
2021   45           ( 9 % von ID3 500) 68 / 762 Tage = 9 %
Rundungsdifferenzen sollen zum letzten Zeitraum addiert werden. Es darf nichts verloren gehen.

Wie fange ich am Besten an? Brauche ich dafür irgendwie eine zweite Tabelle mit den Jahren/Tagen? Oder geht das alleine mit Group by? Danke!
  Mit Zitat antworten Zitat