Scenario:
Je werkt als SQL Server ontwikkelaar. U moet de query voor dbo.Klanttabel schrijven die de dubbele records en het aantal dubbele records moet retourneren.Oplossing:
U kunt de aggregatiefunctie Groeperen op en Tellen gebruiken om alle dubbele records in de tabel te vinden en te tellen.Stel dat we een dbo.Klanttabel hebben met onderstaande definitie en gegevens. We willen het record vinden als het gedupliceerd is door de kolommen FName,LName en 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)
Laten we onze vraag schrijven, we hebben alle kolommen in de selectielijst opgenomen met count(*) en vervolgens gegroepeerd op dezelfde kolommen. Aan het einde zullen we de Having-clausule gebruiken om de records te filteren die duplicaat zijn.
SELECT fname, lname, countryshortname, Count(*) AS RecordCount FROM dbo.customer GROUP BY fname, lname, countryshortname HAVING Count(*) > 1
Uit gegevens kunnen we zien dat het enige record dat duplicaat is door FName,LName en Country korte naam 'Raza','M','PK' is en in totaal twee records heeft zoals geretourneerd door onze query.
Dubbele records vinden met behulp van Group by en Clause in SQL Server