Как мне написать инструкцию для возврата дубликатов записей? - PullRequest
1 голос
/ 01 апреля 2019

У меня есть таблица имен и адресов, и я хочу вернуть полный список имен и адресов с дополнительным столбцом, который определяет, является ли адрес дубликатом или уникальным адресом. Есть несколько повторяющихся записей адресов, которые я вижу, когда выполняю более простое утверждение -

SELECT PersonAddressLine1, Count (*)
FROM CompanyTable1
GROUP BY PersonAddressLine1

или

SELECT PersonAddressLine1, Count (*)
FROM CompanyTable1
GROUP BY PersonAddressLine1
HAVING COUNT (*) > 1

но мне нужно вернуть полную таблицу со столбцами -

PersonID, PersonName, PersonAddressLine1, AddressVerification (Duplicate / Unique), CompanyID, CompanyName.

PersonID - 1
PersonID - 2
PersonID - 3
PersonName - Ryan
PersonName - Andrew
PersonName - Ben
PersonAddressLine1 - 100 Avenue
PersonAddressLine1 - 100 Avenue
PersonAddressLine1 - 200 Avenue

Если я использую приведенный ниже оператор регистра, условие группы влияет на результат подсчета PersonAddressLine1. Все адреса отображаются как уникальные.

SELECT PersonID, PersonName, PersonAddressLine1, CompanyID, CompanyName, 

CASE WHEN count(*) > 1 
THEN CONCAT(PersonName,' ','Address Line 1 is duplicate')
    ELSE CONCAT(PersonName,' ','Address Line 1 is unique')
END AS 'Person Address Verification'

FROM CompanyTable1

GROUP by PersonAddressLine1, PersonID, PersonName, CompanyID, CompanyName

1 Ответ

0 голосов
/ 01 апреля 2019

вы можете использовать оконную функцию COUNT(*) OVER (PARTITION BY PersonAddressLine1), чтобы подсчитать количество дубликатов

SELECT PersonID, PersonName, PersonAddressLine1, CompanyID, CompanyName, 
       CASE WHEN COUNT(*) OVER (PARTITION BY PersonAddressLine1) > 1 
            THEN CONCAT(PersonName,' ','Address Line 1 is duplicate')
            ELSE CONCAT(PersonName,' ','Address Line 1 is unique')
            END AS 'Person Address Verification'
FROM   CompanyTable1

, что ваш текущий запрос сейчас делает не только для проверки PersonAddressLine1, но и для всех следующих PersonAddressLine1, PersonID, PersonName, CompanyID, CompanyName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...