Diyelim bir SQL Server tablonuzda, sıralı bir sayısal kolon var. Tipi integer. Oluşmuş boşlukları bulmanız gerekiyor. Böyle bir durumda basit bir sorguyla konuyu çözümleyebilirsiniz:
SELECT kayit + 1 AS baslangic, sonraki – 1 AS bitis
FROM (SELECT kolon1 AS kayit
(SELECT MIN(kolon1) FROM dbo.T1 AS B
WHERE B.kolon1 > A.kolon1) AS sonraki
FROM dbo.T1 AS A) AS D
WHERE sonraki – kayit > 1;
Sorgunun temel mantığı şu: İlgili tablonun ilgili kolonunda her değeri ve bu değerden bir sonra gelen değeri iki kolon olarak alır.Sonra bu kolonlar arasında farkı 1’den fazla olanları süzer. Bu sorgunun AdventureWorks’te (SQL Server 2005 örnek veritabanı) Person.Contact tablosu için düzenlenmiş hali şöyle:
SELECT kayit + 1 AS baslangic, sonraki – 1 AS bitis
FROM (SELECT ContactID AS kayit,
(SELECT MIN(ContactID) FROM Person.Contact AS B
WHERE B.ContactID > A.ContactID) AS sonraki
FROM Person.Contact AS A) AS D
WHERE sonraki – kayit > 1;