안녕하세요. 비슷한 문제로 예전에 질문을 올렸다가 로직변경으로 수정해보려했으나.. 어려워서.. 다시 질문올립니다 (__)
tableA
type | name
0 | park
0 | kim
0 | woo
1 | lee
1 | jang
2 | jang
2 | park
2 | yun
tableB
type | name
1 | AA
2 | BB
3 | CC
1) tableA.type이 0일때 -> 3개의 값 그대로 표시하고,
=> 예상값 (park,kim,woo)
2) tableA.type이 0이 아닐때 -> tableA.type이 여러개의 값이라도 하나만 나왔으면 합니다. tableA.type = tableB.type
=> 예상값 (AA,BB)
=> 결과 ( park,kim,woo,AA,BB )
감사합니다.
WITH tableA AS ( SELECT 0 type, 'park' name FROM dual UNION ALL SELECT 0, 'kim' FROM dual UNION ALL SELECT 0, 'woo' FROM dual UNION ALL SELECT 1, 'lee' FROM dual UNION ALL SELECT 1, 'jang' FROM dual UNION ALL SELECT 2, 'jang' FROM dual UNION ALL SELECT 2, 'park' FROM dual UNION ALL SELECT 2, 'yun' FROM dual ) , tableB AS ( SELECT 1 type, 'AA' name FROM dual UNION ALL SELECT 2, 'BB' FROM dual UNION ALL SELECT 3, 'CC' FROM dual ) SELECT DISTINCT a.type , NVL(b.name, a.name) name FROM tableA a , tableB b WHERE a.type = b.type(+) ORDER BY type, name ;