sql 2009. 2. 16. 15:04

oracle (+)을 left outer join on 으로 바꾸기

아래의 두개의 쿼리는 동일한 쿼리인다.
(+)를 left outer join on 으로 변경시킨 sql이다.

SELECT SV.STD_NO, SV.KOR_NM, SV.SUST, SV.DEPT_KOR_NM, SV.SHYR, SV.SHREG_CD, PG.PROGRAM, PC.PDCHECK
       , NVL(MB.YEAR, (CASE WHEN SUBSTR(SV.STD_NO, 0, 4) > 8000 THEN TO_NUMBER(1900+SUBSTR(SV.STD_NO, 0, 2)) ELSE TO_NUMBER(SUBSTR(SV.STD_NO, 0, 4)) END)) AS BASEYEAR
FROM ABK_PROGRAMGROUP PG
    , ABEEK_STUINFO_VIEW SV
    , ABK_ABEEKPDCHECK PC
    , ABK_MIDBASIS MB
WHERE 1=1
AND SV.ABEEK_FG = 'Y'
AND SV.SHREG_CD IN ('1','2')
AND PG.HAKKWACD = SV.SUST
AND SV.STD_NO = PC.HAKBUN(+)
AND SV.STD_NO = MB.HAKBUN(+)
ORDER BY SV.STD_NO DESC, SV.KOR_NM DESC



 

SELECT SV.STD_NO, SV.KOR_NM, SV.SUST, SV.DEPT_KOR_NM, SV.SHYR, SV.SHREG_CD, SV.PROGRAM, PC.PDCHECK
       , NVL(MB.YEAR, (CASE WHEN SUBSTR(SV.STD_NO, 0, 4) > 8000 THEN TO_NUMBER(1900+SUBSTR(SV.STD_NO, 0, 2)) ELSE TO_NUMBER(SUBSTR(SV.STD_NO, 0, 4)) END)) AS BASEYEAR
FROM
(SELECT  S.STD_NO, S.KOR_NM, S.SUST, S.DEPT_KOR_NM, S.SHYR, S.SHREG_CD, PG.PROGRAM
 FROM ABEEK_STUINFO_VIEW S, ABK_PROGRAMGROUP PG
WHERE S.ABEEK_FG = 'Y'
 AND S.SHREG_CD IN ('1','2')
 AND S.SUST = PG.HAKKWACD
)SV
LEFT OUTER JOIN
(SELECT HAKBUN, PDCHECK
FROM ABK_ABEEKPDCHECK
)PC
ON SV.STD_NO = PC.HAKBUN
LEFT OUTER JOIN
(SELECT HAKBUN, YEAR
 FROM ABK_MIDBASIS
)MB
ON SV.STD_NO = MB.HAKBUN
ORDER BY SV.STD_NO DESC, SV.KOR_NM DESC