Cenário:
Você está trabalhando como desenvolvedor do SQL Server. Você precisa escrever a consulta para a tabela dbo.Customer que deve retornar os registros duplicados e a contagem de registros duplicados.Solução:
Você pode usar a função de agregação Agrupar por e Contar para encontrar todos os registros duplicados na tabela e contar.Digamos que temos a tabela dbo.Customer com a definição e os dados abaixo. Gostaríamos de encontrar o registro se estiver duplicado pelas colunas FName,LName e CountryShortName.
Create table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2), SaleAmount Int) GO --Insert Rows in dbo.Customer Table insert into dbo.Customer Values ( 1,'Raza','M','PK',10), (2,'Rita','John','US',12), (3,'Sukhi','Singh',Null,25), (4,'James','Smith','CA',60), (5,'Robert','Ladson','US',54), (6,'Alice','John','US',87), (6,'Raza','M','Pk',Null)
Vamos escrever nossa consulta, incluímos todas as colunas na lista de seleção com count(*) e depois agrupamos pelas mesmas colunas. No final, usaremos a cláusula Tendo para filtrar os registros duplicados.
SELECT fname, lname, countryshortname, Count(*) AS RecordCount FROM dbo.customer GROUP BY fname, lname, countryshortname HAVING Count(*) > 1
A partir dos dados podemos ver que o único registro que é duplicado por FName,LName e Country short name é 'Raza','M','PK'e tem um total de dois registros como retornado por nossa consulta.
Como encontrar registros duplicados usando Group by e Using Clause no SQL Server