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 шт):
Попробуйте подзапрос:
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.атрибут = 'налог' )