Это то, что у меня есть - запрос, который извлекает всех лиц с дублированным адресом электронной почты, которые считают, что ранжирование по разделу должно решить мою проблему (фильтр - это адрес электронной почты)
SELECT a.Id, a.EmailAddress,a.UntilDate,a.CreatedOn,a.UserId
INTO #GetEmployeesWithDuplicateEmails
FROM Employee a
INNER JOIN (SELECT
Employee.EmailAddress as EmailAddress
FROM Employee
GROUP BY Employee.EmailAddress
HAVING count(Employee.EmailAddress) > 1
) b
ON a.EmailAddress = b.EmailAddress
ORDER BY a.Id
это вывод запроса Результат запроса
Что я хочу - Запрос ниже возвращает пользователей, которые дублировали адреса электронной почты, я хочу сохранить Самая последняя запись по каждому электронному письму. Если электронная почта принадлежит одному и тому же идентификатору пользователя, конечно, представьте, что есть 5 дублированных электронных писем, если я проверяю, что эти 5 дубликатов принадлежат одному и тому же идентификатору пользователя, я хочу сохранить самую новую запись на основе поля CreatedOn остальные 4 будут обновлены. Я хотел использовать ранжирование по разделам, но в любом случае вы можете посоветовать мне лучший сценарий:
SELECT #GetEmployeesWithDuplicateEmails.*,
RANK() OVER (
PARTITION BY #GetEmployeesWithDuplicateEmails.CreatedOn
ORDER BY #GetEmployeesWithDuplicateEmails.CreatedOn DESC) createdon_rank
INTO #TableValuesToDelete
FROM #GetEmployeesWithDuplicateEmails
INNER JOIN
(
(SELECT #GetEmployeesWithDuplicateEmails.[EmailAddress]
FROM #GetEmployeesWithDuplicateEmails
GROUP BY #GetEmployeesWithDuplicateEmails.[EmailAddress])
) as temp2 ON #GetEmployeesWithDuplicateEmails.[EmailAddress]=temp2.[EmailAddress]
update
#TableValuesToUpdate
SET
#TableValuesToUpdate.EmployedUntilDate=getDate()
WHERE
created_rank > 1
я хочу сохранить самую последнюю запись по каждому письму, если письмо принадлежит одному и тому же идентификатору пользователя , Представьте, что есть 5 дублированных электронных писем, если я проверяю, что эти 5 дубликатов принадлежат одному и тому же UserId, я хочу сохранить самую новую запись, основанную на поле CreatedOn.
Обновление: Только что обновил мой раздел по запросу, но он по-прежнему не может ранжировать отображаемые значения