바로 전에 올렸던 질문이 너무 모호해서 다시 작성합니다. ^^;;
환경은 Oracle 10g 입니다.
with user_data as
(
select 'A' user_id, 'TB_A' user_cat from dual union
select 'B' user_id, 'TB_A' user_cat from dual union
select 'C' user_id, 'TB_A' user_cat from dual union
select 'D' user_id, 'TB_A' user_cat from dual union
select 'E' user_id, 'TB_A' user_cat from dual union
select 'F' user_id, 'TB_A' user_cat from dual union
select 'A' user_id, 'TB_B' user_cat from dual union
select 'B' user_id, 'TB_B' user_cat from dual union
select 'E' user_id, 'TB_B' user_cat from dual union
select 'F' user_id, 'TB_B' user_cat from dual union
select 'A' user_id, 'TB_C' user_cat from dual union
select 'B' user_id, 'TB_C' user_cat from dual union
select 'C' user_id, 'TB_C' user_cat from dual union
select 'K' user_id, 'TB_C' user_cat from dual
)
select *
from user_data;
위와 같은 사용자 데이터가 있습니다.
설명을 위해서 3개의 테이블을 user_cat로 구분하여 하나로 합쳤습니다.
원하는 결과는 아래와 같습니다.
즉 user_cat 별로 user_id의 누락개수를 아래와 같은 테이블처럼 표현하고 싶습니다.
기준은 user_cat가 됩니다.
예를 들어, TB_A를 기준으로 하면, TB_B는 'C', 'D' user_id가 없기 때문에 차이는 -2 입니다. TB_C는 'D', 'E', 'F' 사용자가 없기때문에 -3입니다.
결과는 아래와 같지만, 어떤 user_id가 없는지도 알아야 합니다.
user_cat | TB_A | TB_B | TB_C |
TB_A | 0 | -2 | -3 |
TB_B | 0 | 0 | -2 |
TB_C | -1 | -2 | 0 |
고수분들의 고견을 기다리겠습니다.
** 추가 **
각 테이블에 User_id를 기준으로 차이점을 알고 싶은게 제 질문의 핵심입니다.
|