MS SQL Serverdaki bir tabloda bir çok satırı aynı olan tabloda tekilleştirme yapmak.
Değerleri aynı olan alanlara göre gruplandırıp bunlardan farklı olan ID sütünu (yoksa IDENTITY autoincrement bir sütun oluşturmak lazım)
minimum veya maksimum olanı seçecek şekilde bir iç sorgu yazıyoruz..
Select min(ID) as ID, aynisutun1,aynisutun2, aynisutun3,aynisutun4
from tblTABLO group by aynisutun1,aynisutun2, aynisutun3,aynisutun4
bu sorgu ile aynı olan satırlardan sadece birisi gelir. (IDsi en küçük olan )
sonra bu tabloyu tüm tablo ile join edip birleşmeyenleri (çift kayıtlardan ID'si en küçük olmayanlar) sileriz.
DELETE tblTABLO
--- select * --- test etmekte fayda var.
from tblTABLO
left outer join
(select min(ID) as ID, aynisutun1,aynisutun2, aynisutun3,aynisutun4
from tblTABLO group by aynisutun1,aynisutun2, aynisutun3,aynisutun4 )
as KorunacakKayitlar
on tblTABLO.ID=KorunacakKayitlar.ID
where KorunacakKayitlar.ID is null
Hiç yorum yok:
Yorum Gönder