Einzelnen Beitrag anzeigen

Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: SQL: Anzahl der Monate aus Zeiträumen ermitteln

  Alt 20. Nov 2020, 12:13
Mach dir eine Hilfstabelle mit dem Monatsersten für alle Monate des Jahres (ggf. mehrerer Jahre). Dann ein Select auf diese Tabelle (ggf. eingeschränkt auf einen Zeitraum, z.B. wenn du nur die 1. Jahreshälft betrachten willst). Dazu Joinst du die Leistungszeiträume eines Kunden, die dann in den jeweiligen Monat fallen und schließt die Monate aus, für die sich keine Leistungen finden. Dann gruppier das Ganze nur noch nach Monat und du kannst die Monate zählen.

So eine hilfstabelle kann man bei vielen DBs auch mit "with" erzeugen:

SQL-Code:
-- Oracle
with Monatstabelle as (
  Select Trunc(Current_Date,'Year') As Monat From Dual Union
  Select Add_Months(Trunc(Current_Date,'Year')+1) As Monat From Dual Union
  Select Add_Months(Trunc(Current_Date,'Year')+2) As Monat From Dual Union
  ...
  Select Add_Months(Trunc(Current_Date,'Year')+11) As Monat From Dual
  )

Select count(Distinct Monat) as Anzahl
From Monatstabelle M
Left Join Zeitraumtabelle Z
  ON M.Monat Between Z.Bezug_Von and Z.Bezug_Bis
  and KDNR='1234'
Where KDNR is not NULL
Ralph
  Mit Zitat antworten Zitat