Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So finden Sie doppelte Datensätze mithilfe der Group by- und Having-Klausel in SQL Server - SQL Server / TSQL-Tutorial Teil 132

Szenario:

Sie arbeiten als SQL Server Entwickler. Sie müssen die Abfrage für die Tabelle dbo.Customer schreiben, die die doppelten Datensätze und die Anzahl der doppelten Datensätze zurückgeben soll.


Lösung:

Sie können die Aggregatfunktion Gruppieren nach und Zählen verwenden, um alle doppelten Datensätze in der Tabelle zu finden und zu zählen.

Nehmen wir an, wir haben eine dbo.Customer-Tabelle mit der folgenden Definition und den folgenden Daten. Wir möchten den Datensatz finden, wenn er nach den Spalten FName, LName und CountryShortName dupliziert ist.


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)
 
 Lassen Sie uns unsere Abfrage schreiben, wir haben alle Spalten in die Auswahlliste mit count(*) aufgenommen und dann nach denselben Spalten gruppiert. Am Ende verwenden wir die Having-Klausel, um die doppelten Datensätze zu filtern.


SELECT fname, 
       lname, 
       countryshortname, 
       Count(*) AS RecordCount 
FROM   dbo.customer 
GROUP  BY fname, 
          lname, 
          countryshortname 
HAVING Count(*) > 1
 Anhand der Daten können wir sehen, dass der einzige Datensatz, der von FName, LName und Kurzname des Landes dupliziert wird, „Raza“, „M“, „PK“ ist und insgesamt zwei Datensätze hat, die von unserer Abfrage zurückgegeben werden.

So finden Sie doppelte Datensätze mithilfe von Group by und Having Clause in SQL Server