안녕하세요..
SELECT * FROM MAIN_TBL A LEFT JOIN CD_TBL B ON B.COD = A.COD LEFT JOIN SUB_TBL C ON C.NUM = A.NUM AND C.DVSN = DECODE((SELECT COUNT(*) FROM SUB_TBL WHERE NUM = A.NUM AND DVSN = A.DVSN AND ROWNUM = 1), 0, 'C', A.DVSN) ; 위의 쿼리에서 AND C.DVSN = DECODE...절 때문에 ORA-01799 열은 하위 질의에 포괄 조인될 수 없습니다. 에러가 나는데요..
다른 방법 없을까요?
sub_tbl 의 PK 가 뭔가요? (num, dvsn) 인가요?
dvsn 이 같은 자료가 없으면? dvsn 이 'C' 인 자료를 가져오려는 의도인가요?
SELECT * 로 적혀 있어서 컬럼명은 임의로 적어 봤습니다.
SELECT a.* , b.* , NVL(c.num , d.num ) c_num , NVL(c.dvsn, d.dvsn) c_dvsn , NVL(c.col1, d.col1) c_col1 , NVL(c.col2, d.col2) c_col2 FROM main_tbl a LEFT JOIN cd_tbl b ON b.cod = a.cod LEFT JOIN sub_tbl c ON c.num = a.num AND c.dvsn = a.dvsn LEFT JOIN sub_tbl d ON d.num = a.num AND d.dvsn = 'C' ;