Мне нужно найти пользователей с одинаковыми именами, фамилиями и датой рождения. Я должен указать идентификатор клиента каждого из них, поэтому я не могу использовать COUNT(*)
с группой. Я использую ROW_NUMBER()
, разделенный этими тремя столбцами в CTE. Но мне нужно включить все несколько значений, включая where rownumber = 1
.Включить строки в ROW_NUMBER(), где больше 1, включая первое значение
Это то, что я сейчас:
;WITH
Rownumbers AS
(
SELECT
[Client code]
,Name
,Surname
,[Date of Birth]
,ROW_NUMBER() OVER
(PARTITION BY
name
,surname
,[DATE of birth]
ORDER BY
[client code]
)AS [Row Number]
FROM
kyc_details
)
SELECT
,[client code]
,Name
,Surname
,[DATE of birth]
,[Row Number]
FROM
[Rownumbers]
WHERE
[Row Number] > 1
Проблема здесь в том, мне нужно включить rownumber = 1
. По сути, мне нужно выбрать все столбцы с повторяющимися значениями, но клиентский код будет уникальным.
SQL Server 2008 –
ли вы рассмотреть возможность использования присоединиться? присоедините таблицу к себе и где id <> id и все остальные значения равны. Это даст вам только дубликаты. – sagi
«Найти пользователей с одинаковыми именами, фамилиями и датой рождения» неясно. Вы имеете в виду, найти пользователей, которые имеют одинаковое имя, фамилию и дату рождения в качестве другого пользователя? Или найти пользователей, имеющих одно и то же имя, фамилию или дату рождения в качестве другого пользователя? – philipxy