Einzelnen Beitrag anzeigen

Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
436 Beiträge
 
Delphi 12 Athens
 
#1

SQL: Anzahl der Monate aus Zeiträumen ermitteln

  Alt 20. Nov 2020, 11:28
Datenbank: MS SQL-Server • Version: 2014 • Zugriff über: ADO
Hallo Gemeinde,

aus einer Tabelle mit Leistungszeiträumen für verschiedene Kunden muss ich die Anzahl der Monate ermitteln, in denen ein Kunde Leistungen bezogen hat. Jeder Kunde kann pro Monat mehrere Leistungen beziehen, so dass durchaus auch mehr als 100000 Leistungszeiträume für einen Kunden vorhanden sein können. Jeder Leistungszeitraum beginnt am 1. eines Monats und endet am letzten Tag eines Monats; Teilmonate sind also nicht möglich. Das ganze sollte möglichst direkt durch ein SQL-Statement (ohne Delphi) ermittelt werden können.

Beispiel:

KDNR;BezugVon;BezugBis
123;01.01.2020;31.01.2020
123;01.03.2020;30.04.2020
123;01.04.2020;31.05.2020

Anzahl der Monate mit Leistungsbezug = 4 (Januar, März, April und Mai 2020)

Mein erster Ansatz war jetzt, eine temporäre Tabelle mit Monat und Jahr zur erstellen, jeden Monat einzutragen und am Ende zu gruppieren. Die Anzahl der gruppierten Datensätze entspräche dann der Anzahl der Monate.

Hat jemand eine Idee, wie man z.B. aus dem Zeitraum 01.03.2020 bis 30.04.2020 möglichst performant die 2 Zeilen (März+April) in eine temporäre Tabelle bekommt? Oder hat jemand ggf. noch eine viel bessere Idee, um die Monate zu zählen?

Geändert von Papaschlumpf73 (20. Nov 2020 um 11:33 Uhr)
  Mit Zitat antworten Zitat