MIJ_EMPLOYE 라는 테이블이 있습니다. 인사 기본 테이블이며, KEY는 EMP_NO 입니다.
궁금한것은 ... 인사 기본 테이블의 모든 데이터를 조회 하되 이전 사원번호를 포함하여 조회 하는 것입니다.
직원은 신규 발령이나 정직원 채용등으로인해 사원번호가 변경 될 수 있습니다.
1.변경 될 경우에는 입사일자가 사번 변경일자로 저장됩니다.
2.사번 변경 시 기존 사번은 퇴직 처리, 신규 사번은 재직
3.아래와 같이 주민등록 번호 하나에 대해 여러 사번이 생성 될 수 있습니다.
예를 들어
EMP_NO PRE_EMP_NO ENT_YMD 재/퇴 주민번호 ......................
861685 NULL 19861101 퇴직 910312-1XXXXXX
441180 861685 19991211 퇴직 910312-1XXXXXX
442358 441180 20070312 퇴직 910312-1XXXXXX
442231 442358 20080311 퇴직 910312-1XXXXXX
442090 442231 20090305 퇴직 910312-1XXXXXX
442500 442090 20100114 퇴직 910312-1XXXXXX
442710 442500 20110301 재직 910312-1XXXXXX
123456 NULL 20160804 재직 910412-1XXXXXX <-- 사번 변경이 없었던 사원
.
.
.
.
.
.
.
11097 ROW
부탁드립니다..
WITH T (EMP_NO, ENT_YMD, 재퇴, 주민번호) AS ( SELECT '861685', '19861101', '퇴직', '910312-1XXXXXX' FROM DUAL UNION ALL SELECT '441180', '19991211', '퇴직', '910312-1XXXXXX' FROM DUAL UNION ALL SELECT '442358', '20070312', '퇴직', '910312-1XXXXXX' FROM DUAL UNION ALL SELECT '442231', '20080311', '퇴직', '910312-1XXXXXX' FROM DUAL UNION ALL SELECT '442090', '20090305', '퇴직', '910312-1XXXXXX' FROM DUAL UNION ALL SELECT '442500', '20100114', '퇴직', '910312-1XXXXXX' FROM DUAL UNION ALL SELECT '442710', '20110301', '재직', '910312-1XXXXXX' FROM DUAL ) SELECT EMP_NO ,LAG(EMP_NO) OVER(ORDER BY 1) AS PRE_EMP_NO ,ENT_YMD ,재퇴 ,주민번호 FROM T
단순히 이전사번을 같이 조회 하면되는것인지요?
WITH T (EMP_NO, ENT_YMD, 재퇴, 주민번호) AS ( SELECT '861685', '19861101', '퇴직', '900112-1XXXXXX' FROM DUAL UNION ALL SELECT '441180', '19991211', '퇴직', '910502-1XXXXXX' FROM DUAL UNION ALL SELECT '442358', '20070312', '퇴직', '920111-1XXXXXX' FROM DUAL UNION ALL SELECT '442231', '20080311', '퇴직', '930312-1XXXXXX' FROM DUAL UNION ALL SELECT '442090', '20090305', '퇴직', '940312-1XXXXXX' FROM DUAL UNION ALL SELECT '442500', '20100114', '퇴직', '910502-1XXXXXX' FROM DUAL UNION ALL SELECT '412710', '20110301', '재직', '950516-1XXXXXX' FROM DUAL UNION ALL SELECT '462500', '20100114', '퇴직', '900112-1XXXXXX' FROM DUAL ) SELECT EMP_NO ,CASE WHEN RN > 1 THEN LAG(EMP_NO) OVER(ORDER BY 1) ELSE NULL END AS PRE_EMP_NO ,ENT_YMD ,재퇴 ,주민번호 FROM ( SELECT EMP_NO ,ENT_YMD ,재퇴 ,주민번호 ,ROW_NUMBER() OVER(PARTITION BY 주민번호 ORDER BY EMP_NO) AS RN FROM T A )
이게 맞나요?