Gebruik de CHECKSUM()
functie om te zien of de gegevens identiek zijn, zonder elke kolom te controleren.
Stel dat je zoiets hebt als dit:
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')
De gegevens in de tweede en derde rij zijn duplicaten. Voer deze instructie uit om de gegevens op te schonen:
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