Scenarie:
Du arbejder som SQL Server-udvikler. Du skal skrive forespørgslen til dbo.Kundetabel, der skal returnere de duplikerede poster og antallet af dubletposter.Løsning:
Du kan bruge Group by og Count aggregeret funktion til at finde alle de duplikerede poster i tabel og antal.Lad os sige, at vi har dbo.Customer tabel med nedenstående definition og data. Vi vil gerne finde posten, hvis den er dubleret af kolonnerne FName,LName og 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)
Lad os skrive vores forespørgsel, vi har inkluderet alle kolonnerne i udvalgslisten med count(*) og derefter gruppere efter de samme kolonner. Til sidst vil vi bruge Having-klausulen til at filtrere posten, som er duplikat.
SELECT fname, lname, countryshortname, Count(*) AS RecordCount FROM dbo.customer GROUP BY fname, lname, countryshortname HAVING Count(*) > 1
Fra data kan vi se, at den eneste post, der er duplikeret af FName, LName og Landes korte navn, er 'Raza','M','PK'og har i alt to poster som returneret af vores forespørgsel.
Sådan finder du duplikerede poster ved at bruge Group by og Having Clause i SQL Server