Удалить записи с теми же тремя значениями - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужно удалить все записи, которые имеют повторяющиеся значения, так что в итоге я получу только Джона Доу со строками ниже.

LastName, FirstName and DateofBirth

Doe        Jane          4/15/1936
Doe        Jane          4/15/1936
Doe        Jane          4/15/1936
Doe        John          6/12/1978

Я использовал приведенный ниже код, но он оставил 2 строки.Я хочу удалить все Джейн Доу в этом случае, так как они одинаковы.

WITH cte AS ( 
SELECT LastName, FirstName, DateOfBirth , ROW_NUMBER() OVER(PARTITION BY LastName, FirstName, DateOfBirth
ORDER BY LastName) AS rn FROM PatientDemographics2 ) DELETE FROM cte WHERE rn > 1

1 Ответ

0 голосов
/ 20 сентября 2019

Используемый вами запрос используется для удаления лишних дубликатов, а не для удаления всех записей, если дубликаты присутствуют.

Для удаления всех, один из подходов:

WITH cte AS ( 
SELECT LastName, FirstName, DateOfBirth , ROW_NUMBER() OVER(PARTITION BY LastName, FirstName, DateOfBirth
ORDER BY LastName) AS rn FROM PatientDemographics2 ) 
SELECT DISTINCT LastName, FirstName, DateOfBirth INTO #TEMP WHERE rn>1

DELETE A
FROM Original_table as A
INNER JOIN #TEMP  as B
ON A.LastName = B.LastName
AND A.FirstName = B.FirstName
AND A.DateOfBirht = B.DateOfBirth
...