Wie finden Sie die Grenzen von Gruppen von zusammenhängenden fortlaufenden Nummern?

7

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%     
Mike Station 11.06.2013, 14:08
quelle

1 Antwort

25

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.

%Vor%

Hinweis: Wenn number nicht eindeutig ist, ersetzen Sie ROW_NUMBER durch DENSE_RANK im obigen Code.

    
Martin Smith 11.06.2013, 14:34
quelle