Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment rechercher des enregistrements en double à l'aide de la clause Group by et Have dans SQL Server - Tutoriel SQL Server / TSQL, partie 132

Scénario :

Vous travaillez en tant que développeur SQL Server. Vous devez écrire la requête pour la table dbo.Customer qui doit renvoyer les enregistrements en double et le nombre d'enregistrements en double.


Solution :

Vous pouvez utiliser la fonction d'agrégation Grouper par et Compter pour trouver tous les enregistrements en double dans la table et compter.

Disons que nous avons la table dbo.Customer avec la définition et les données ci-dessous. Nous aimerions trouver l'enregistrement s'il est dupliqué par les colonnes FName,LName et CountryShortName.


Créer la table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2), SaleAmount Int)GO--Insert Rows in dbo.Customer Tableinsert into dbo.CustomerValues ​​(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 )
 
 Écrivons notre requête, nous avons inclus toutes les colonnes dans la liste de sélection avec count (*) puis regroupé par les mêmes colonnes. À la fin, nous utiliserons la clause Have pour filtrer les enregistrements en double.


SELECT fname, lname, countryshortname, Count(*) AS RecordCount FROM dbo.customer GROUP BY fname, lname, countryshortname HAVING Count(*)> 1
 À partir des données, nous pouvons voir que le seul enregistrement qui est dupliqué par FName, LName et Country short name est 'Raza','M','PK'et a un total de deux enregistrements renvoyés par notre requête.

Comment rechercher des enregistrements en double à l'aide de Group by et de la clause Have dans SQL Server