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