Миграция данных - Проверьте загруженные данные, где первичный ключ может измениться
В настоящее время я пытаюсь написать SQL для проверки количества данных, которые были перенесены из одного приложения в другое.
Одна из основных таблиц, которая переносится, иногда содержит первичный ключ, который уже существует в целевом приложении, поэтому его необходимо изменить. Это приводит к тому, что мои показатели не совпадают.
У меня есть справочная таблица для этих измененных первичных ключей, но я не уверен, как включить эту справочную таблицу в мое левое соединение.
Я действительно не знаю, как включить условие, где ключ из таблицы A может быть ключом в таблице B или новым ключом, хранящимся в справочной таблице?
select count(*)
from table_b b
left join table_a a on
b.key = a.key
where a.key is null;
Справочная таблица очень проста, две колонки, old_number, new_number. Он будет содержать только записи, в которых ключ в таблице A необходимо было изменить перед загрузкой в таблицу B.
old_number, new_number
12345678, 13345678
23456781, 24456781
Как я могу включить этот сценарий?
select count(*)
from table_b b
left join table_a a on
b.key = (a.key or new_number if it exists)
where a.key is null;
Таким образом, если запрос может включать new_numbers в справочную таблицу, то счетчик миграции должен соответствовать счетчику в таблице A.
1 ответ
Это должно работать
выберите count () из table_b b, table_a a, где b.key = a.key UNION выберите count () из table_b b, reference_table re, где b.key = re.new_number;