terça-feira, 28 de outubro de 2014

Como deletar linhas repetidas SQL Server de maneira fácil

Quem não precisou ainda certamente um dia vai precisar...
Apagar  linhas repetidas SQL Server usando CTE (Commom Table Expressions) é um jeito rápido e muito simples!
Vamos lá:


-- Cria uma tabela que terá as linhas duplicadas
Create Table Funcionarios (Id Int, Nome Varchar(100), Departmento Varchar(50))

-- Insere dados duplicados na tabela (Ids 1 e 4)
insert into Funcionarios values (1, 'João', '.Net')
insert into Funcionarios values (2, 'Arnaldo', '.NET')
insert into Funcionarios values (3, 'Alexandre', 'PHP')
insert into Funcionarios values (4, 'João', '.NET')
insert into Funcionarios values (5, 'Carlos', 'Designer')

-- Lista os registros repetidos considerando as colunas Nome e Departamento
With tblTemp as
(
Select ROW_NUMBER() Over(PARTITION BY Nome, Departmento ORDER BY Nome)
   As RowNumber,* FROM Funcionarios
)
-- Apaga as linhas repetidas, deixando apenas uma delas
Delete From tblTemp Where RowNumber >1

--Apaga a tabela de testes

Drop Table Funcionarios


Fácil né? Sem copias de tabelas, agrupamentos e etc.