Gunakan CHECKSUM()
berfungsi untuk melihat apakah datanya sama, tanpa memeriksa setiap kolom.
Asumsikan Anda memiliki sesuatu seperti ini:
create table #t (log_id int, c varchar(10), d int, log_date date)
insert #t values
(1, 'aaaaa', 1, '20140101'),
(1, 'aaaaa', 1, '20140102'),
(1, 'aaaaa', 1, '20140103'),
(1, 'bbbbb', 1, '20140104'),
(2, 'ccc', 10, '20140103'),
(2, 'cdd', 10, '20140105')
Data pada baris kedua dan ketiga adalah duplikat. Untuk membersihkan data, jalankan pernyataan ini:
with x as (
select *, row_number() over(partition by log_id, checksum(log_id, c, d) order by log_date) as rn
from #t
)
delete x where rn > 1