Ich habe eine Tabelle mit folgender Definition
%Vor%und Beispieldaten
%Vor% Betrachte nur die Zeilen, in denen status = 0
enthalten ist. Wie kann ich die Number
-Werte in Bereiche zusammenhängender fortlaufender Zahlen reduzieren und den Anfang und das Ende jedes Bereichs finden?
d. Für die Beispieldaten wären die Ergebnisse
%Vor%Wie in den Kommentaren erwähnt, ist dies ein klassisches Lücken- und Inselproblem.
Eine von Itzik Ben Gan popularisierte Lösung ist die Tatsache, dass ROW_NUMBER() OVER (ORDER BY number) - number
innerhalb einer "Insel" konstant bleibt und nicht in mehreren Inseln vorkommen kann.
Hinweis: Wenn number
nicht eindeutig ist, ersetzen Sie ROW_NUMBER
durch DENSE_RANK
im obigen Code.
Tags und Links sql-server sql-server-2008 gaps-and-islands