Получение конкретного вывода из 2 таблиц - PullRequest
0 голосов
/ 10 мая 2019

У меня есть 2 таблицы:

tab_1 :

ID      VAL
1       Y
2       N
3       Y

tab_2 :

ID      VAL
2       N
3       X
4       Y

I want to get the final output like 

ID     Operation
1      INSERT
2      EQUAL
3      DIFF
4      DEL

Я на самом базовом уровне в объединениях, поэтому мне нужна помощь в объяснении / понимании этого типа функций. Заранее спасибо.

1 Ответ

2 голосов
/ 10 мая 2019

Похоже, что вы хотите полное внешнее соединение между двумя таблицами;а затем выражение для сравнения столбцов val (их существования и значений) в обеих таблицах.Может быть что-то вроде:

-- CTEs for sample data
with tab_1 (ID, VAL) as (
            select 1, 'Y' from dual
  union all select 2, 'N' from dual
  union all select 3, 'Y' from dual
),
tab_2 (ID, VAL) as (
            select 2, 'N' from dual
  union all select 3, 'X' from dual
  union all select 4, 'Y' from dual
)
-- actual query
select coalesce(t1.id, t2.id) as id,
  case
    when t1.id is null then 'DEL'
    when t2.id is null then 'INSERT'
    when t2.val = t1.val then 'EQUAL'
    else 'DIFF'
  end as operation
from tab_1 t1
full outer join tab_2 t2 on t2.id = t1.id
order by id;

        ID OPERATION
---------- ---------
         1 INSERT   
         2 EQUAL    
         3 DIFF     
         4 DEL      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...