MS SQL de Mükerrer Kayıt Bulma ve Mükerrer Kayıtların Detaylarını Listeleme

MS SQL de Mükerrer Kayıt Bulma ve Mükerrer Kayıtların Detaylarını Listeleme

MS SQL de mükerrer kayıt bulmak için aranan alana göre gruplama yapılıp birden fazla olan kayıtlar having koşulu ile bulunabilir. Ancak bu bir özet sorgu olduğundan mükkerrer kayıtların detayına tek tek bakılmadan anlaşılmaz. Biz eğer elde ettiğimiz bu özet sorguyu alt sorgu olarak kullanırsak mükkerrer kayıtların bütün alanlarını listeleyebiliriz. 

Veri kaynağı için geçici tablo oluşturma 

SELECT 1 AS PERNO,'AHMET1' AS ADI,'DENEME1' AS SOYADI,'İSTANBUL' AS SEHIR
INTO #GECICI_TABLO
UNION
SELECT 2 AS PERNO, 'AHMET2' AS ADI,'DENEME2' AS SOYADI,'ANKARA' AS SEHIR
UNION
SELECT 3 AS PERNO, 'AHMET3' AS ADI,'DENEME3' AS SOYADI,'İZMİR' AS SEHIR
UNION
SELECT 16 AS PERNO,'AHMET17' AS ADI,'DENEME16' AS SOYADI,'ANKARA' AS SEHIR
UNION
SELECT 4 AS PERNO,'AHMET4' AS ADI,'DENEME4' AS SOYADI,'BURSA' AS SEHIR
UNION
SELECT 5 AS PERNO,'AHMET5' AS ADI,'DENEME5' AS SOYADI,'İZMİR' AS SEHIR
UNION
SELECT 6 AS PERNO,'AHMET6' AS ADI,'DENEME6' AS SOYADI,'BURSA' AS SEHIR
UNION
SELECT 7 AS PERNO,'AHMET7' AS ADI,'DENEME7' AS SOYADI,'ADANA' AS SEHIR
UNION
SELECT 8 AS PERNO,'AHMET8' AS ADI,'DENEME8' AS SOYADI,'İSTANBUL' AS SEHIR
UNION
SELECT 9 AS PERNO,'AHMET9' AS ADI,'DENEME9' AS SOYADI,'İSTANBUL' AS SEHIR
UNION
SELECT 9 AS PERNO,'AHMET9' AS ADI,'DENEME10' AS SOYADI,'İZMİR' AS SEHIR
UNION
SELECT 10 AS PERNO,'AHMET10' AS ADI,'DENEME10' AS SOYADI,'ANKARA' AS SEHIR
UNION
SELECT 12 AS PERNO,'AHMET12' AS ADI,'DENEME12' AS SOYADI,'İZMİR' AS SEHIR
UNION
SELECT 13 AS PERNO,'AHMET13' AS ADI,'DENEME13' AS SOYADI,'ADANA' AS SEHIR
UNION
SELECT 14 AS PERNO,'AHMET14' AS ADI,'DENEME14' AS SOYADI,'İSTANBUL' AS SEHIR
UNION
SELECT 15 AS PERNO,'AHMET15' AS ADI,'DENEME15' AS SOYADI,'İSTANBUL' AS SEHIR
UNION
SELECT 16 AS PERNO,'AHMET16' AS ADI,'DENEME16' AS SOYADI,'İZMİR' AS SEHIR


Oluşturduğumuz geçici tablomuzun içeriği aşağıdaki gibidir. 
SELECT * FROM #GECICI_TABLO 

PERNO ADI SOYADI SEHIR
1 AHMET1 DENEME1 İSTANBUL
2 AHMET2 DENEME2 ANKARA
3 AHMET3 DENEME3 İZMİR
4 AHMET4 DENEME4 BURSA
5 AHMET5 DENEME5 İZMİR
6 AHMET6 DENEME6 BURSA
7 AHMET7 DENEME7 ADANA
8 AHMET8 DENEME8 İSTANBUL
9 AHMET9 DENEME10 İZMİR
9 AHMET9 DENEME9 İSTANBUL
10 AHMET10 DENEME10 ANKARA
12 AHMET12 DENEME12 İZMİR
13 AHMET13 DENEME13 ADANA
14 AHMET14 DENEME14 İSTANBUL
15 AHMET15 DENEME15 İSTANBUL
16 AHMET16 DENEME16 İZMİR
16 AHMET17 DENEME16 ANKARA

 --MUKERRER KAYIT 

SELECT PERNO,COUNT(PERNO) AS SAYI
FROM #GECICI_TABLO
GROUP BY PERNO
HAVING COUNT(PERNO)>1

PERNO SAYI
9 2
16 2

---MUKERRER KAYIT DETAYILARI

SELECT * FROM #GECICI_TABLO
WHERE PERNO IN (
SELECT PERNO
FROM #GECICI_TABLO
GROUP BY PERNO
HAVING COUNT(PERNO)>1)
ORDER BY PERNO

Sonuç :    

PERNO ADI SOYADI SEHIR
9 AHMET9 DENEME10 İZMİR
9 AHMET9 DENEME9 İSTANBUL
16 AHMET16 DENEME16 İZMİR
16 AHMET17 DENEME16 ANKARA


İlgili Yazılar