Простой способ сравнения наборов -
select ... a
EXCEPT
select ... b
, но вам нужен еще один
select ... b
EXCEPT
select ... a
, и это не говорит о том, какие столбцы отличаются.
Или вы используете full outer join
:
select
coalesce(a.ZIP_CODE, b.ZIP_CODE)
,coalesce(a.House_ID, b.House_ID)
,case when a.col1 <> b.col then 'a: || a.col1 || ' b:' || b.col1 end
...
from
( select ....) as a
full join
( select ....) as b
on a.ZIP_CODE = b.ZIP_CODE
and a.House_ID = b.House_ID
and ( a.col1 <> a.col1 or
a.col2 <> a.col2 or
a.col3 <> a.col3 or
...
)
Если столбцы имеют значение NULL, вам нужно добавить дополнительные проверки условий для , один из обоих столбцов равен NULL .Конечно, этот синтаксис сравнения может быть автоматически создан с использованием существующих метаданных ....