SQL-Zusammenfassung der fehlenden Zahlen in Folge

Ich möchte Lücken in einer Sequenz finden und die Ergebnisse auf folgende Weise zusammenfassen:

Zahlenfolge: 2, 3, 4, 8, 9, 12, 13, 14, 15
fehlende Zahlen: 0, 1, 5, 6, 7, 10, 11
min Anzahl: 0 (immer)
max Anzahl: max Anzahl der Sequenz (15 in diesem Beispiel)

Die Zusammenfassung sollte wie folgt aussehen:

 From | To | # of missing 00 | 01 | 2 05 | 07 | 3 10 | 11 | 2 

Ich verwende SQL-server und in Wirklichkeit wird die Sequenz viele weitere Zahlen enthalten (nahe einer Million). Ich habe viele Skripte gefunden, die die fehlenden Nummern in der Sequenz finden und auflisten, aber ich kann nicht herausfinden, wie man es in der gewünschten Weise zusammenfasst.

Wenn es hilft, wird das Feld BELNR und die Tabelle heißt BSEG .

EDIT: Mit der Hilfe aus dem Material der Lücken und Inseln konnte ich eine Lösung finden (darf nicht die optimale sein, aber ich denke es funktioniert):

 with C as ( select belnr, row_number() over(order by belnr) as rownum from bseg ) select cast(Cur.belnr as bigint) + 1 as [From], cast(nxt.belnr as bigint) - 1 as [To], (cast(nxt.belnr as bigint) - 1) - (cast(Cur.belnr as bigint) + 1) + 1 as [# of Missing] from C as Cur join C as Nxt on Nxt.rownum = cast(Cur.rownum as int) +1 Where cast(nxt.belnr as bigint) - cast(Cur.belnr as bigint) > 1 

Das heißt Inseln und Lücken Problem. Lesen Sie hier mehr:

https://www.simple-talk.com/sql/t-sql-programming/the-sql-of-gaps-and-inslands-in-sequenzen/

Das Wort "Lücken" im Titel bezieht sich auf Lücken in Wertefolgen. Inseln sind ununterbrochene Sequenzen, die durch Lücken begrenzt sind. Das Problem der "Lücken und Inseln" besteht darin, dass SQL die ununterbrochenen Sequenzen und das Ausmaß der Lücken zwischen ihnen in einer Spalte schnell erkennt.