SQL ROW_NUMBER() ile Tekrarlı Satırları Silmek

Merhabalar,
Bugün sizlerle SQL Server'da ROW NUMBER ifadesini kullanarak tekrar eden verileri silip her bir verinin unique olmasını sağlayan SQL kodumuzu yazacağız. Özellikle veri tabanımızı oluştururken ID değerimizi identity(otomatik arttırma) özelliğimizi etkinleştirmediysek tekrar eden ID değerlerini silerken işimizi çok kolaylaştıracak bir yöntem.

Aşağıdaki fotoğrafta tablomuz ve verilerimiz bulunuyor bizim istediğimiz verilerimizin tutarlılığı açısından her bir satırımızın tekrar etmeyen şekilde veri tabanımızda bulunması.


SELECT *, ROW_NUMBER()OVER(PARTITION BY ID ORDER BY ID) AS RowNumber
   FROM Calisan

Yukarıdaki kodumuzu yazdığımızda ID'ye göre numaralandırılan yeni bir kolon oluşturuluyor.

Sorgumuzu çalıştırdığımızda dönen sonuç bu şekilde oluyor. yani RowNumber değeri 1 dışında olanları silersek her tüm verilerimiz tekrarsız olacak.

Yukarıda yazdığımız sorgumuzu Common Table Expression kullanarak silme işlemi gerçekleştireceğiz. Common table expression bir sorgunun yürütülmesi anında elde edilmiş geçici sonuçlar bir veya daha fazla kere kullanılmasını sağlayan ifadelerdir. CTE bir table veya view olmayıp sadece bir sorgu ifadesidir. Yani geçici ve kalıcı tablolar gibi herhangi bir veri içermezler.

WITH EmployeesCTE AS ( SELECT *, ROW_NUMBER()OVER(PARTITION BY ID ORDER BY ID) AS RowNumber FROM Employees ) DELETE FROM EmployeesCTE WHERE RowNumber > 1


Silme işlemi sonucunda elimizdeki verileri yukarıdaki halde veri tabanımızda saklamaya devam edebiliriz.

Yorumlar

Bu blogdaki popüler yayınlar

Excel VBA ile Farklı Excel Dosyalarını Bir Excelde Birleştirmek

T-SQL Trigger(tetikleyici) Örnekleri