Я новичок в SQL и пытаюсь понять, как я могу найти, существуют ли похожие поля для разных значений в столбце:
Мой код:
WITH LOC_CTE AS
(SELECT DISTINCT fa.AccountKey, dce.EmailAddress , dcp.Phone , dpo.BrandName, dpo.BrandId
FROM Fact.Account fa
LEFT JOIN Dim.PetOwner dpo ON dpo.PetOwnerKey = fa.PetOwnerKey
LEFT JOIN Dim.RatingAddress dra ON dra.RatingAddressKey = fa.RatingAddressKey
LEFT JOIN Dim.CustomerEmail dce ON dce.CustomerEmailKey = fa.CurrentCustomerEmailKey
LEFT JOIN Dim.CustomerPrimaryPhone dcp ON dcp.CustomerPrimaryPhoneKey = fa.CurrentCustomerPrimaryPhoneKey
)
SELECT * FROM (
SELECT LOC_CTE.*
,row_number() over (partition by EmailAddress,Phone,BrandId order by BrandName) as seqnum
from LOC_CTE
) Q
where seqnum >= 1;
Вывод дает мне :
AccountKeyEmailAddress Phone BrandName BrandId seqnum
389082 0160150@m**.edu 2098579** AP 4 1
430223 01co***st**e@msn.com8655677**9 AP 4 1
430224 01cor**s**e@msn.com 8655677**9 AP 4 2
531443 01mar**01@gmail.com 73278**63 AP 4 1
544454 01mu**rmyra@gmail.com 8133**793 AP 4 1
548374 03b**y13@gmail.com 30130**93 AP 4 1
216594 03d**ado@gmail.com 50363**34 AP 4 1
377919 03d**ado@gmail.com 50363**734 AP 4 2
486237 03d**ado@gmail.com 50363**734 HP 3 3
532010 041**hen@gmail.com 85749**455 AP 4 1
365925 05bla**ro*e21@gmail.com 682365**51 AP 4 1
365926 05bla**ro*e21@gmail.com 682365**51 HP 3 2
Так что, как можно заметить в моем выводе, я могу обнаружить дублирующиеся записи и последовательность их двойственности. Но я хочу, чтобы в моем окончательном отчете также было указано, повторяется ли один и тот же человек (адрес электронной почты и номер телефона) под другим брендом. Например, если вы заметили в последних двух строках выхода, это один и тот же человек, но под двумя разными брендами и идентификатором бренда. Но я просто хочу изолировать эти экземпляры и сгенерировать вывод, который показывает только оригинальный дубликат вместе с дубликатом, который подходит под другим брендом / brandID. Как мне это сделать?
Я пытался отредактировать последнюю строку моего предложения и интегрировал предложение NOT, но я не получил ни вывода, ни ошибок. Мой синтаксис может быть неправильным, но надеюсь, что это поможет с логикой c
where seqnum >= 1 AND NOT BrandID = BrandID ;