Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como encontrar registros duplicados usando a cláusula Group by e Using no SQL Server - Tutorial SQL Server / TSQL Parte 132

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