Я все еще новичок в работе с базами данных, поэтому, пожалуйста, наберитесь терпения. Я прочитал несколько похожих вопросов, но ни один из них, похоже, не говорит о той же проблеме, с которой я сталкиваюсь.
Немного информации о том, что я делаю, у меня есть таблица, заполненная контактной информацией, и некоторые контакты дублируются, но большинство дублированных строк имеют сокращенный номер телефона, что делает эти данные бесполезными.
Я написал следующий запрос для поиска дубликатов:
WITH CTE (CID, Firstname, lastname, phone, email, length, dupcnt) AS
(
SELECT
CID, Firstname, lastname, phone, email, LEN(phone) AS length,
ROW_NUMBER() OVER (PARTITION BY Firstname, lastname, email
ORDER BY Firstname) AS dupcnt
FROM
[data.com_raw]
)
SELECT *
FROM CTE
WHERE dupcnt > 1
AND length <= 10
Я предполагал, что в этом запросе будут найдены все записи, имеющие дубликаты, на основе трех указанных мной столбцов, и выбрал любую, у которой dupcnt
больше 1, и телефонный столбец с длиной, меньшей или равной 10. Но когда я запускаю запрос более одного раза, я получаю разные наборы результатов при каждом выполнении. Должна быть какая-то логика, которую мне здесь не хватает, но я совершенно сбит с толку этим. Все столбцы имеют тип данных varchar
, за исключением CID, который равен int
.