Scenario:
Stai lavorando come sviluppatore di SQL Server. Devi scrivere la query per la tabella dbo.Customer che dovrebbe restituire i record duplicati e il conteggio dei record duplicati.Soluzione:
Puoi utilizzare la funzione di aggregazione Raggruppa per e Conte per trovare tutti i record duplicati nella tabella e contare.Diciamo di avere una tabella dbo.Customer con la definizione e i dati seguenti. Vorremmo trovare il record se è duplicato dalle colonne FName,LName e 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)
Scriviamo la nostra query, abbiamo incluso tutte le colonne nell'elenco di selezione con count(*) e quindi raggruppate per le stesse colonne. Alla fine utilizzeremo la clausola Have per filtrare i record duplicati.
SELECT fname, lname, countryshortname, Count(*) AS RecordCount FROM dbo.customer GROUP BY fname, lname, countryshortname HAVING Count(*) > 1
Come dai dati possiamo vedere che l'unico record duplicato da FName, LName e Country short name è 'Raza', 'M', 'PK' e ha un totale di due record come restituito dalla nostra query.
Come trovare record duplicati utilizzando Raggruppa per e Avendo clausola in SQL Server