add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE GapsIslands (ID INT NOT NULL, SeqNo INT NOT NULL);
ALTER TABLE GapsIslands ADD CONSTRAINT pk_GapsIslands PRIMARY KEY (ID, SeqNo);
INSERT INTO GapsIslands
SELECT 1, 1 UNION ALL
SELECT 1, 2 UNION ALL
SELECT 1, 5 UNION ALL
SELECT 1, 6 UNION ALL
SELECT 1, 8 UNION ALL
SELECT 1, 9 UNION ALL
SELECT 1, 10 UNION ALL
SELECT 1, 12 UNION ALL
SELECT 1, 20 UNION ALL
SELECT 1, 21 UNION ALL
SELECT 1, 25 UNION ALL
SELECT 1, 26;
12 rows affected
SELECT ID, SeqNo, ROW_NUMBER() OVER (ORDER BY SeqNo) AS RowNum
, CASE WHEN EXISTS ( SELECT *
FROM GapsIslands AS b
WHERE b.ID = a.ID
AND b.SeqNo = a.SeqNo - 1 )
THEN 'Exists'
ELSE 'Not exists'
END AS previous_SeqNo_exists
FROM GapsIslands AS a
ORDER BY SeqNo
ID SeqNo RowNum previous_SeqNo_exists
1 1 1 Not exists
1 2 2 Exists
1 5 3 Not exists
1 6 4 Exists
1 8 5 Not exists
1 9 6 Exists
1 10 7 Exists
1 12 8 Not exists
1 20 9 Not exists
1 21 10 Exists
1 25 11 Not exists
1 26 12 Exists
SELECT ID, SeqNo, ROW_NUMBER() OVER (ORDER BY SeqNo) AS RowNum
FROM GapsIslands AS a
WHERE NOT EXISTS (
SELECT *
FROM GapsIslands AS b
WHERE b.ID = a.ID AND b.SeqNo = a.SeqNo - 1)
ID SeqNo RowNum
1 1 1
1 5 2
1 8 3
1 12 4
1 20 5
1 25 6