У меня есть база данных SQL Server с уникальным ключевым столбцом и 49 столбцами элементов данных (имя / адрес / и т. Д. ......).У меня есть «дубликаты» записей, но с разными ключами, и я хочу найти эти дубликаты записей.
Например, у меня может быть «Джон Смит» (с 47 другими столбцами информации) в таблице дважды.Обе записи Джона Смита будут иметь разные столбцы уникальных ключей, но в остальном все остальные столбцы будут идентичны.В том числе, если один из столбцов равен NULL, то он будет равен NULL для обеих записей Джона Смита.
Чтобы усложнить ситуацию, есть две таблицы, которые мне нужно объединить, а затем, при объединении, найти любые записи, где элементы данных(все, кроме ключа) одинаково.
макет таблицы 1
MyKey, table2ID, Col1, Col2, Col3....Col46.
макет таблицы 2
ID, col47, col48, col49
от Col1 до Col49 - это место, где «дублируются» данныеможет быть.
Я пробовал что-то вроде ниже, что почти работает.Сбой, если у меня есть значения NULL.Например, если Col22 равно NULL для обеих записей Джона Смита (т.е. они оба имеют одинаковое значение NULL), то они не будут выбраны при выборе.
Вопрос: как мне получитьчто-то вроде ниже, чтобы работать, даже когда есть значения NULL, которые нужно сравнивать друг с другом.
with MyJoinedTable as
(
select PolicyNumber, col01, col02, col03......col49
from table1
inner join table2 on table2id = table2.id
)
select PolicyNumber, t1.col01, t1.col02, t1.col03.......t1.col49
from MyJoinedTable t1
inner join (select col01, col02, col03......col49
from MyJoinedTable
group by col01, col02, col03......col49
having count(*) > 1) t2
on t1.col01 = t2.col01
and t1.col02 = t2.col02
.......
and t1.col49 = t2.col49
order by t1.col01, t1.col02