Oracle - Как сравнить разницу данных в двух столбцах для таблиц разной структуры

Мне необходимо выявить разницу в двух таблицах и столбцах с разной структурой.

Таблица А:

атрибут компания код
цена rus AR2
долг fr AR3
налог en ARY
налог fr AR5
налог en AR10
налог fr BRZ
налог en AVZ
налог fr AAA
налог en QZE
налог en AR5

Таблица B:

филиал компания элемент дата
123 rus AR2 09/08/2021
3456 fr AR3 01/02/2020
7890 en ARY 08/01/2021
5654 en AR5 08/01/2020
5654 en QZE 08/01/2020
5654 en HHH 08/01/2020

Необходимо выявить разницу в столбцах Код и Элемент только для случаев, когда компания для обеих таблиц равна 'en' и Атрибут для первой таблицы равен 'налог'

Примерный код для понимания сути:

select A.* from A left join B on A.компания = B.компания where A.атрибут = 'налог' and A.компания = 'en'

Конечная таблица будет выглядеть следующим образом:

Таблица С:

атрибут компания код
налог en ARY
налог en AR10
налог en AVZ
налог en HH

где первые три столбца показывают разницу данных из первой таблицы, а четвертый столбец - из второй.

Буду благодарна любой помощи и подсказке.

С уважением,


Ответы (1 шт):

Автор решения: Alexey Loskutov

Попробуйте подзапрос:

select A.* 
from A
where A.атрибут = 'налог' 
  and A.компания = 'en'
  AND A.код NOT IN (SELECT B.элемент FROM B where B.компания = 'en')

И в другую сторону (что есть в B но нет в A):

select B.* 
from B
where B.компания = 'en'
  AND B.элемент NOT IN (SELECT А.код FROM A where A.компания = 'en' AND A.атрибут = 'налог' )
→ Ссылка