sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo encontrar registros duplicados usando la cláusula Group by y Have en SQL Server - Tutorial de SQL Server / TSQL Parte 132

Escenario:

Estás trabajando como desarrollador de SQL Server. Debe escribir la consulta para la tabla dbo.Customer que debe devolver los registros duplicados y el recuento de registros duplicados.


Solución:

Puede usar la función de agregado Agrupar por y Contar para encontrar todos los registros duplicados en la tabla y contarlos.

Digamos que tenemos la tabla dbo.Customer con la siguiente definición y datos. Nos gustaría encontrar el registro si está duplicado por las columnas FName,LName y 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)
 
 Escribamos nuestra consulta, hemos incluido todas las columnas en la lista de selección con conteo (*) y luego las agrupamos por las mismas columnas. Al final, usaremos la cláusula Have para filtrar los registros que están duplicados.


SELECT fname, 
       lname, 
       countryshortname, 
       Count(*) AS RecordCount 
FROM   dbo.customer 
GROUP  BY fname, 
          lname, 
          countryshortname 
HAVING Count(*) > 1
 A partir de los datos, podemos ver que el único registro que está duplicado por FName, LName y el nombre corto del país es 'Raza', 'M', 'PK' y tiene un total de dos registros según lo devuelto por nuestra consulta.

Cómo encontrar registros duplicados usando Agrupar por y Tener cláusula en SQL Server