Home Forums SQL Server 2008 T-SQL (SS2K8) Rank duplicates, but only rows involved in duplicates RE: Rank duplicates, but only rows involved in duplicates

  • It looks like Scott almost had what you wanted. You're wanting all records where there is a duplicate, which can be restated as "All records where a duplicate exists." So, we use an EXISTS clause:

    WITH Dups AS (

    SELECT

    bus.[Business_pk]

    ,[BusinessName], [Address], [Phone]

    ,ROW_NUMBER() OVER (PARTITION BY [BusinessName], [Address], [Phone] ORDER BY bus.[Business_pk] DESC) AS MatchRank

    FROM [dbo].[TestBusiness] bus

    )

    SELECT *

    INTO [dbo].[PossibleDuplicateBusinesses]

    FROM Dups a

    WHERE EXISTS (

    SELECT 1

    FROM Dups b

    WHERE a.BusinessName = b.BusinessName

    AND a.Address = b.Address

    AND a.Phone = b.Phone

    AND b.MatchRank > 1

    );