[ OUTER ] JOIN 시 주의사항
코드값 목록 만큼 데이터목록 조회하고자 할때 WHERE 절에 조건을 넣는 게 아니라 조인절에 AND로 추가해서 조회한다.
SELECT
B.CHCK_DATE
, TO_CHAR(TO_DATE(B.CHCK_DATE), 'YYYY-MM-DD') AS 점검일자
, B.BULD_CODE
, F_EF1000_S(B.BULD_CODE , '1') AS BULD_NM
, A.DETAIL_CODE AS CHCK_REALM_CODE
, F_CB1100_S(A.DETAIL_CODE, 'EF013') AS 점검분야
, B.INSCTR_PSITN_CODE
, F_CB2000_S(B.INSCTR_PSITN_CODE, '1') AS 점검자소속
, F_CB2000_S(B.INSCTR_PSITN_CODE, '2') AS 점검자소속그룹코드
, F_CB2000_S(B.INSCTR_PSITN_CODE, '3') AS 점검자소속그룹
, B.INSCTR_NO AS 점검자번호
, F_EH3000_S(B.INSCTR_NO) AS 점검자
, B.INSCTR_OFCPS_CODE
, F_CB1100_S(B.INSCTR_OFCPS_CODE, 'EH004') AS 점검자직위
, NVL(B.PRESENTN_AT, 'N') AS 제출여부
, B.PRESENTN_DATE AS 제출일자
, '점검자' AS SUB_TITLE
FROM (
SELECT C.MAIN_CODE, C.DETAIL_CODE, C.KOR_FMY_NM, C.USE_AT
FROM 코드테이블 C
WHERE NVL(C.USE_AT, 'N') = 'Y'
AND C.MAIN_CODE = 'EF013'
) A LEFT OUTER JOIN 테이블 B
ON A.DETAIL_CODE = B.CHCK_REALM_CODE
AND B.CHCK_DATE = '20210611'
AND B.BULD_CODE = '02'
ORDER BY A.DETAIL_CODE