Pular para o conteúdo principal

Postagens

Mostrando postagens de julho, 2016

MSSQL - Remover itens duplicados

Muitas vezes, faz necessário eliminar informações duplicadas, existe algumas formas de realizar essa tarefa. Abaixo segue uma forma de fazer. Explicação rápida, ele conta o total de duplicados, deixando sempre 1 (TOP(@CONT -1)). Esse script foi testando no MSSQL 2008, 2012 e 2014. DECLARE @ID VARCHAR(500) DECLARE @CONT int DECLARE CUR_DELETE CURSOR FOR SELECT N4_FILIAL+N4_CBASE+N4_ITEM+N4_TIPO+N4_OCORR+N4_TIPOCNT+N4_CONTA+N4_DATA+N4_SEQREAV, COUNT(*) FROM SN4010 WHERE D_E_L_E_T_ = ' ' AND N4_FILIAL = '01' --AND N4_ITEM = '07' AND N4_CBASE = 'BR0016 ' AND N4_DATA = '20100831' GROUP BY N4_FILIAL+N4_CBASE+N4_ITEM+N4_TIPO+N4_OCORR+N4_TIPOCNT+N4_CONTA+N4_DATA+N4_SEQREAV HAVING COUNT(*) > 1 OPEN CUR_DELETE FETCH NEXT FROM CUR_DELETE INTO @ID,@CONT WHILE @@FETCH_STATUS = 0 BEGIN UPDATE TOP(@CONT -1) SN4010 SET D_E_L_E_T_ = '*' WHERE N4_FILIAL+N4_CBASE+N4_ITEM+N4_TIPO+N4_OCORR+N4_TIPOCNT+N4_CONTA+N4_DATA+N4_SEQREAV = @ID FETCH NEXT