SQL Server ile Virgülle Ayrılmış Sayı Kümesindeki Verileri Araştırma ve Eksik Kayıtları Raporlama

Giriş

SQL Server, veri tabanındaki karmaşık sorgular ve veri analizleri için güçlü bir platformdur. Bazen, dış bir kaynaktan gelen virgülle ayrılmış bir sayı kümesi gibi verileri, SQL Server’daki mevcut bir tablonun belirli bir sütununda aramak ve bulunmayan değerleri tespit etmek gerekebilir. Bu yazıda, virgülle ayrılmış bir sayı kümesini SQL Server’da bir tablo sütunu ile nasıl karşılaştırabileceğimizi ve bu sütunda bulunmayan verileri nasıl raporlayabileceğimizi adım adım ele alacağız.

Problem Tanımı

Elimizde virgülle ayrılmış bir sayı kümesi olduğunu varsayalım:

1,2,3,4,5,6,7,8,9,10

Bu sayı kümesindeki değerlerin, SQL Server’da FIRMA adlı tablonun odasicil sütununda bulunup bulunmadığını kontrol etmek istiyoruz. Amacımız, bu sayılardan odasicil sütununda bulunmayanları tespit etmek ve raporlamak.

Çözüm Adımları

Bu problemi çözmek için şu adımları izleyeceğiz:

  1. Virgülle Ayrılmış Verileri Tabloya Dönüştürmek: SQL Server’da STRING_SPLIT fonksiyonunu kullanarak virgülle ayrılmış verileri tabloya dönüştüreceğiz. Bu fonksiyon, her bir sayıyı ayrı bir satır olarak bir geçici tabloya (CTE) eklememizi sağlar.
  2. LEFT JOIN Kullanarak Kayıt Karşılaştırması Yapmak: STRING_SPLIT sonucu elde edilen tabloyu FIRMA tablosu ile LEFT JOIN işlemi kullanarak birleştireceğiz. Bu sayede, sayı kümesindeki her bir değerin odasicil sütununda olup olmadığını kontrol edeceğiz.
  3. Eksik Verileri Seçmek: LEFT JOIN sonucunda odasicil sütununda olmayan (NULL) verileri filtreleyerek raporlayacağız.

Adım Adım Uygulama

Adım 1: Virgülle Ayrılmış Sayı Kümesini Tanımlamak
Öncelikle, virgülle ayrılmış sayıları bir SQL değişkenine kaydediyoruz. Bu sayede STRING_SPLIT fonksiyonunu kullanarak veriyi parçalayabiliriz.

WITH Sayilar AS (
    SELECT TRIM(value) AS oda_sicil_no
    FROM STRING_SPLIT(@Sayilar, ',')
)

Bu CTE (Common Table Expression), virgülle ayrılmış her bir değeri oda_sicil_no sütununda ayrı bir satır olarak içeren geçici bir tablo oluşturur.

Adım 3: LEFT JOIN ile Karşılaştırma ve Eksik Kayıtların Seçimi
FIRMA tablosundaki odasicil sütunu ile Sayilar CTE’sini LEFT JOIN kullanarak birleştiriyoruz. LEFT JOIN, sağdaki tablodan (FIRMA) karşılığı olmayan satırları da seçmemize olanak tanır.

SELECT s.oda_sicil_no
FROM Sayilar s
LEFT JOIN FIRMA f ON s.oda_sicil_no = f.odasicil
WHERE f.odasicil IS NULL;

Bu sorgu şu işlemleri gerçekleştirir:

  • Sayilar CTE’sindeki her bir oda_sicil_no değeri, FIRMA tablosundaki odasicil sütunu ile eşleştirilir.
  • LEFT JOIN kullanıldığı için odasicil sütununda bulunmayan oda_sicil_no değerleri NULL olarak döner.
  • WHERE koşulu ile NULL olan odasicil değerlerini filtreleriz. Bu da FIRMA tablosunda bulunmayan tüm oda_sicil_no değerlerini raporlamamızı sağlar.

Sonuç

Yukarıdaki adımları tamamladığımızda, SQL Server’da virgülle ayrılmış sayı kümesindeki verilerin FIRMA tablosunun odasicil sütununda olup olmadığını kontrol etmiş ve bulunmayan değerleri raporlamış oluruz. Bu teknik, dışarıdan gelen veri kümelerini mevcut veri tabanındaki kayıtlarla karşılaştırmak ve eksik verileri tespit etmek için oldukça kullanışlıdır.

Özet

  • Virgülle Ayrılmış Verileri Tabloya Dönüştürme: STRING_SPLIT fonksiyonunu kullanarak verileri tablo formatına getirdik.
  • LEFT JOIN Kullanımı: LEFT JOIN ile verilerimizi karşılaştırdık ve FIRMA tablosunda olmayan değerleri belirledik.
  • Eksik Verileri Raporlama: WHERE koşulu ile NULL olan değerleri filtreleyerek, eksik olan kayıtların raporunu aldık.

Bu yöntem, özellikle dış veri kaynakları ile çalışırken ve büyük veri kümelerini mevcut verilerle eşleştirirken büyük kolaylık sağlar. SQL Server’da veri analizi yaparken bu tür teknikleri kullanmak, veri kalitesini ve analiz sürecini önemli ölçüde artırır.

Loading