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