테이블 1 :
이름 | 취미 | 특기 |
홍길동 | A | aa |
이순신 | B | |
안중근 | C | cc |
김유신 | D | dd |
이순신의 특기는 null값입니다.
테이블 2 :
취미코드 | 취미이름 | 특기코드 | 특기이름 |
A | 자전거 | aa | 컴퓨터 |
B | 독서 | bb | 수학 |
C | 태권도 | cc | 영어 |
D | 취침 | dd | 국어 |
이 두개의 테이블을 조인할때 이순신의 특기는 null인데 취미로 대신하여 취미,특기가 모두 B로 출력 하고 싶습니다.
결과값 :
이름 | 취미 | 특기 |
홍길동 | 자전거 | 컴퓨터 |
이순신 | 독서 | 독서 |
안중근 | 태권도 | 영어 |
김유신 | 취침 |
국어 |
nvl을 이용하여 decode를 했는데 조인이 안먹히는거 같네요ㅠ
테이블 구조를 바꾸셔야 되겠지만, 답변만 드릴게요..
WITH A AS
(
SELECT '홍길동' AS "이름", 'A' AS "취미", 'aa' AS 특기 FROM DUAL UNION ALL
SELECT '이순신' AS "이름", 'B' AS "취미", '' AS 특기 FROM DUAL UNION ALL
SELECT '안중근' AS "이름", 'C' AS "취미", 'cc' AS 특기 FROM DUAL UNION ALL
SELECT '김유신' AS "이름", 'D' AS "취미", 'dd' AS 특기 FROM DUAL
)
,B AS
(
SELECT 'A' AS "취미코드", '자전거' AS "취미이름", 'aa' AS "특기코드", '컴퓨터' AS "특기이름" FROM DUAL UNION ALL
SELECT 'B' AS "취미코드", '독서' AS "취미이름", 'bb' AS "특기코드", '수학' AS "특기이름" FROM DUAL UNION ALL
SELECT 'C' AS "취미코드", '태권도' AS "취미이름", 'cc' AS "특기코드", '영어' AS "특기이름" FROM DUAL UNION ALL
SELECT 'D' AS "취미코드", '취침' AS "취미이름", 'dd' AS "특기코드", '국어' AS "특기이름" FROM DUAL
)
SELECT "이름", "취미이름", DECODE("특기",NULL,"취미이름","특기이름") AS "특기이름"
FROM A,B
WHERE A."취미" = B."취미코드"