아래와 같이 두개의 테이블이 있습니다.
T1 과 T2를 두개의 테이블 Merge 후 C열을 합쳐서 보고 싶습니다.
T1
a | b | c | d |
홍길동 | 팔 | 12 | O |
강남콩 | 다리 | 32 | X |
오래된 | 머리 | 11 | O |
T2
a | b | c | d |
홍길동 | 팔 | 14 | O |
강남콩 | 다리 | 33 | O |
새로운 | 가슴 | 44 | O |
원하는 결과
a | b | T1.c | T2.c |
홍길동 | 팔 | 12 | 14 |
강남콩 | 다리 | 32 | 33 |
오래된 | 머리 | 11 | NULL |
새로운 | 가슴 | NULL | 44 |
기본적인 JOIN / UNION 쓰는 법은 아는데, 어찌 조합을 해야할 지 감이 오질 않습니다.
SELECT T1.a, T1.b, T1.c, T2.c FROM T1 OUTER JOIN T2 ON T1.'b' = T2.'b'
이렇게 하면 T2의 값이 나오질 않고 아래처럼 나오게 되는데요.도와주세요!!!@
T1.'b' = T2.'b' 이문장때문에 나오질 않는것 같은데,
T2 혹은 T1에 중복 가능하며, 포함되지 않는 값 또한 모두 나오게 하고 싶습니다.
a | b | T1.c | T2.c |
홍길동 | 팔 | 12 | 14 |
강남콩 | 다리 | 32 | 33 |
오래된 | 머리 | 11 | |
44 |
Comment 1
-
건우아빠
2020.01.09 11:05
union 을 이용하여 두테이블을 붙일때
컬럼을 분리하여 붙인 다음 합니하시면 됩니다.
with res as
(
select a , b, c t1_c , d t1_d , NULL t2_c , NULL t2_d
from T1
union all
select a , b, NULL t1_c , NULL t1_d , c t2_c , d t2.d
from T2
)
select a , b, sum(t1_c) t1_c, sum( t2_c ) t2_c , max( t1_d) ,max( t2_d ) t2_d
from res
group by a, b