Я пытаюсь определить, сколько дубликатов рабочих телефонов я могу найти в группе 94, сравнивая их со всеми другими активными группами.
- Контакты сгруппированы с использованием GroupId
- Контактная таблица содержит только идентификаторы, а НЕ телефоны
- ПодробнаяКонтактная таблица содержит телефоны
- Таблица контактов содержит статус группы
sql работает, устанавливая число для каждого дублированного рабочего телефона> 1.
Проблема заключается в том, что задается общее число> 1 для всех групп, кроме 94. Мне нужно в первую очередь знать 94. Любая идея, как я сначала установить rownumber> 1 для дубликатов в GroupId 94?
DECLARE @GroupID Int
SET @GroupID = 94
;WITH cte AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY d.WorkPhone ORDER BY c.id DESC)
AS rownumber
,d.WorkPhone
,c.id
,GroupID
FROM ContactTable c
INNER JOIN DetailedContactTable d
ON c.DetailedContactId = d.id
WHERE c.GroupID IN
(
SELECT id
FROM ContactSummaryTable WHERE id = @GroupID
OR GroupActive = 1
)
AND NOT d.WorkPhone IS NULL
AND d.WorkPhone <> ''
)
SELECT * FROM cte WHERE rownumber > 1
ORDER BY GroupID;