Scenariusz:
Pracujesz jako programista SQL Server. Musisz napisać zapytanie do tabeli dbo.Customer, które powinno zwrócić zduplikowane rekordy i liczbę zduplikowanych rekordów.Rozwiązanie:
Możesz użyć funkcji agregującej Grupuj według i Policz, aby znaleźć wszystkie zduplikowane rekordy w tabeli i zliczyć.Załóżmy, że mamy tabelę dbo.Customer z poniższą definicją i danymi. Chcielibyśmy znaleźć rekord, jeśli jest zduplikowany przez kolumny FName,LName i 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)
Napiszmy nasze zapytanie, wszystkie kolumny z listy wyboru uwzględniliśmy za pomocą count(*), a następnie pogrupowaliśmy według tych samych kolumn. Na koniec użyjemy klauzuli Have do filtrowania rekordów, które są zduplikowane.
SELECT fname, lname, countryshortname, Count(*) AS RecordCount FROM dbo.customer GROUP BY fname, lname, countryshortname HAVING Count(*) > 1
Na podstawie danych widzimy, że jedynym rekordem, który jest zduplikowany przez FName,LName i krótką nazwę kraju, jest „Raza”, „M”, „PK” i mają łącznie dwa rekordy zwrócone przez nasze zapytanie.
Jak znaleźć zduplikowane rekordy przy użyciu funkcji Grupuj według i Klauzule SQL Server