SQL Server tablosunda boşlukları bulmak


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;

Bu yazı SQL Server içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s