Verwenden Sie die CHECKSUM()
Funktion, um zu sehen, ob die Daten identisch sind, ohne jede einzelne Spalte zu prüfen.
Angenommen, Sie haben so etwas:
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')
Die Daten in der zweiten und dritten Zeile sind Duplikate. Um die Daten zu bereinigen, führen Sie diese Anweisung aus:
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