FULL OUTER JOIN : 두 개의 테이블이 조인이 되면 조인된 데이터는 한 행으로 출력하고, 각 테이블에서 조인되지 않은 데이터는 별도의 새로운 행으로 출력된다. 조인이 되지 않아도 두 개의 테이블 데이터가 모두 조회
아래에선 rownum을 50으로 맞춰서 괜찮지만 데이터가 다르다면 위처럼 나온다
a랑 b테이블 결과값이 있는데 한 row로 합치려면..
rownum으로 값을 줘서 조인후 a.rn = b.rn함
SELECT
A.EMPNO,
A.HDQTS_ORGNM,
A.DEPT_ORGNM,
A.DEPTMT_ORGNM,
A.TEAM_ORGNM,
B.EMPNO AS EMPNO1,
B.HDQTS_ORGNM AS HDQTS_ORGNM1,
B.DEPT_ORGNM AS DEPT_ORGNM1,
B.DEPTMT_ORGNM AS DEPTMT_ORGNM1,
B.TEAM_ORGNM AS TEAM_ORGNM1
FROM
(
SELECT
EMPNO,
HDQTS_ORGNM,
DEPT_ORGNM,
DEPTMT_ORGNM,
TEAM_ORGNM,
ROW_NUMBER() OVER (ORDER BY EMPNO) AS rn
FROM
${PM}.VW_EMP_ALL
LEFT JOIN
${PM}.VW_BSCD ON VW_EMP_ALL.ORGCD = VW_BSCD.DEPT_CD
AND TO_CHAR(SYSDATE, 'YYYYMMDD') BETWEEN VW_BSCD.USE_BGNG_YMD AND VW_BSCD.USE_END_YMD
WHERE
JNCMP_YMD BETWEEN '20230101' AND '20240501'
AND ROWNUM <=50
) A
FULL OUTER JOIN
(
SELECT
EMPNO,
HDQTS_ORGNM,
DEPT_ORGNM,
DEPTMT_ORGNM,
TEAM_ORGNM,
ROW_NUMBER() OVER (ORDER BY EMPNO) AS rn
FROM
${PM}.VW_EMP_ALL
LEFT JOIN
${PM}.VW_BSCD ON VW_EMP_ALL.ORGCD = VW_BSCD.DEPT_CD
AND TO_CHAR(SYSDATE, 'YYYYMMDD') BETWEEN VW_BSCD.USE_BGNG_YMD AND VW_BSCD.USE_END_YMD
WHERE
JNCMP_YMD BETWEEN '20220101' AND '20230501'
AND ROWNUM <=50
) B ON A.rn = B.rn;
'업무용 > 오라클' 카테고리의 다른 글
PIVOT, UNPIVOT, 테이블 별칭 (0) | 2024.05.17 |
---|---|
pivot 피벗 /with 임시테이블 (0) | 2024.05.09 |
group by와 distinct 사용 시 order by 안되고 order by시 group by안되는 문제 시 파티션 사용! (0) | 2024.05.03 |
LAG, LEAD (이전값, 다음값) (0) | 2024.05.03 |
merge into (update insert동시에) (0) | 2024.04.17 |