Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo update

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...

Update SQL com Inner Join

UPDATE SZ4020 SET Z4_VEND1 = '999999' FROM SZ4020 INNER JOIN SZ5020 ON SZ4020.Z4_NUMCTR = SZ5020.Z5_NUMCTR WHERE Z4_CLIENTE BETWEEN '001385' AND '002621' UPDATE SZ5020 SET Z5_GERCOM = '2' FROM SZ5020 INNER JOIN SZ4020 ON SZ5020.Z5_NUMCTR = SZ4020.Z4_NUMCTR WHERE Z4_CLIENTE BETWEEN '001385' AND '002621' **********************Verificações ******************* Select * from SZ4020 WHERE Z4_VEND1 = '' SELECT * FROM SZ4020 INNER JOIN SZ5020 ON SZ4020.Z4_NUMCTR = SZ5020.Z5_NUMCTR WHERE Z4_CLIENTE BETWEEN '001385' AND '002621' SELECT * FROM SZ5020