Миграция данных - Проверьте загруженные данные, где первичный ключ может измениться

В настоящее время я пытаюсь написать 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;

Другие вопросы по тегам