Я пытаюсь найти информацию о том, как дедуплировать таблицу на основе количества совпадающих столбцов между записями.SQL dedupe на основе количества сопоставимых столбцов
Допустим, мой источник данных выглядит
---------------------------------------------------
| ColumnA | ColumnB | ColumnC | ColumnD | ColumnN |
---------------------------------------------------
| Peter | Dink | Midget | NULL | 0738455 |
| Peter | Dink | Child | 334AA | 49595 |
| Mark | Walhg | Funky | 334AA | 0738455 |
| Mark | Dink | NULL | NULL | NULL |
| Mark | Walhg | Funky | 334AA | NULL |
| Peter | Dink | NULL | NULL | 0738455 |
---------------------------------------------------
В основном я хочу, чтобы иметь возможность предложить количество записей, которые разделяют 2, 3, 4, и т.д. столбцы данных; однако мне нужно, чтобы это ограничивалось только подмножеством столбцов (и игнорировало NULL/пробелы).
Из приведенных выше данных, я хотел бы быть в состоянии сказать:
- Есть 0 записей, которые соответствуют на 5 колонок
- Есть 1 записей, которые соответствуют на 4 колонки (3,5)
- Имеются 1 записи, которые соответствуют по 3 колонкам (1,6) (3,5)
- Имеются 2 записи, которые соответствуют по 2 столбца (1,6) (2,6) (3,5) (1 , 2)
Мне также понадобится, чтобы он «сдвигался» вниз, так как количество согласованных столбцов становилось все меньше и меньше. Таким образом, в приведенных выше данных мои данные совпадают после проверки соответствия пяти столбцов. Затем на 4 колонки данных сводится к:
---------------------------------------------------
| ColumnA | ColumnB | ColumnC | ColumnD | ColumnN |
---------------------------------------------------
| Peter | Dink | Midget | NULL | 0738455 |
| Peter | Dink | Child | 334AA | 49595 |
| Mark | Walhg | Funky | 334AA | 0738455 |
| Mark | Dink | NULL | NULL | NULL |
| Peter | Dink | NULL | NULL | 0738455 |
---------------------------------------------------
5-я колонна ушла, потому что это было deduped (я понятия не имею, как я решил, который был удален, вероятно, на какой дате колонке). Поэтому я могу сказать, что 1 запись удалена.
После проверки на 3 колонки:
---------------------------------------------------
| ColumnA | ColumnB | ColumnC | ColumnD | ColumnN |
---------------------------------------------------
| Peter | Dink | Midget | NULL | 0738455 |
| Peter | Dink | Child | 334AA | 49595 |
| Mark | Walhg | Funky | 334AA | 0738455 |
| Mark | Dink | NULL | NULL | NULL |
---------------------------------------------------
Так что я могу сказать, другой 1 удаляется.
Затем 2 колонки:
---------------------------------------------------
| ColumnA | ColumnB | ColumnC | ColumnD | ColumnN |
---------------------------------------------------
| Peter | Dink | Midget | NULL | 0738455 |
| Mark | Walhg | Funky | 334AA | 0738455 |
| Mark | Dink | NULL | NULL | NULL |
---------------------------------------------------
Другой столбец удаляется.
Как я думал, я бы приблизился к этому, предоставив вес, это по существу количество совпадающих точек данных из выбора столбцов. Например, возможно, я бы не хотел использовать столбец «Страна» для подсчета в качестве одного из соответствующих столбцов, я бы использовал только те, которые идентифицируют запись, такую как «Имя и номер телефона».
Затем я могу посмотреть, сколько записей выводится на каждый вес (количество совпадений столбцов) и принять решение о том, что мы будем дедуплировать все с 7 соответствующими столбцами данных идентификации; и сверните любые значения в одной записи, которые имеют NULL/blank в дубликатной записи.
Это все очень далеко от меня. Я знаю, что хочу делать; просто не знаю, как это сделать.
Не совсем то, что я имел в виду. Используя вышеизложенное, я могу создавать петли и находить записи, соответствующие каждой записи, на основе двух соответствующих столбцов (с небольшим изменением + добавлением). Однако, как только у меня есть это, я не уверен, как я смогу объединить все результаты? – NeomerArcana
Вы можете поместить их в таблицы переменных, таблицы temp, исходные таблицы, представления, создать процедуру, в которой вы пишете имя таблицы и столбцы, которые вы хотите дедупментировать .. что-то вроде этого: P – SubqueryCrunch