sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan finder du duplikerede poster ved at bruge Group by og Having-klausulen i SQL Server - SQL Server / TSQL Tutorial Part 132

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



  1. SQLite - Slip en database

  2. PIVOT i sql 2005

  3. PostgreSQL hvor alt er i array

  4. Sådan rettes "Konfigurationsmuligheden 'Agent XPs' eksisterer ikke" i SQL Server (T-SQL)