안녕하세요
쿼리를 짜다보니 궁금한게 많이 있었습니다.
"근로계약갱신일"을 기준으로 하여 1년 안에 사용한 연차사용일자의 연차사용일수의 합을 구하는 것입니다.
A테이블
근로계약갱신일
B테이블
연차사용일자 , 연차사용일수
A테이블에서 B테이블을 LEFT OUTER JOIN을 했습니다.
그런데 B테이블에서 조건을 넣다보니 막히는게 있었습니다.
B테이블 조건에서
WHERE 연차사용일자 BETWEEN ADD_MONTHS(to_date(근로계약갱신일, -12),'yyyymmdd') AND 근로계약갱신일
이런식으로 A테이블에 있는 근로계약갱신일을 가져와서 B테이블의 조건식에 넣고 싶습니다.
어떻게해야 하나요?
SELECT
T1.사원번호
, T1.고용일
, SFHR_팀명(T1.팀코드, #JDCSESSION_회계단위코드#) AS 부서명
, SFMG_성명(T1.사원번호, #JDCSESSION_기관코드#) AS 성명
, T2.연차사용일수
, SFMG_연차수(T1.사원번호, #JDCSESSION_기관코드#) - T2.연차사용일수 AS 잔여연차수
, SFMG_연차수(T1.사원번호, #JDCSESSION_기관코드#) AS 총연차수
, SFHR_직위명(T1.직위코드, #JDCSESSION_회계단위코드#) AS 직위명
, to_char(ADD_MONTHS(to_date(T1.근로계약갱신일,'yyyymmdd'), -12)+1,'yyyymmdd') AS 시작일
, T1.근로계약갱신일 AS 재계약일
FROM ( SELECT 성명
, 사원번호
, 팀코드
, 고용일
, 직위코드
, 기관코드
, 근로계약갱신일
FROM TBMG_직원정보
WHERE 퇴직일 IS NULL
AND 팀코드 = NVL(#팀코드#, 팀코드)
AND 직위코드 = NVL(#직위코드#, 직위코드)
AND 성명 LIKE #성명# || '%'
AND 사원번호 = NVL(#사원번호#, 사원번호)
AND 기관코드 = #기관코드#
)T1
LEFT OUTER JOIN
(SELECT TRIM(사원번호) AS 사원번호
, SUM(연차사용일수) AS 연차사용일수
FROM TBMG_연차관리내역
WHERE 기관코드 = #기관코드#
AND 연차사용일자 BETWEEN to_char(ADD_MONTHS(to_date(T1.근로계약갱신일, 'yyyymmdd'), -12),'yyyymmdd') AND to_char(T1.근로계약갱신일)
GROUP BY 사원번호) T2
ON T1.사원번호 = T2.사원번호
ORDER BY T1.팀코드, T1.사원번호
---------------------------------------------------------------------------------------------------------------------------------------------------------------
AND 연차사용일자 BETWEEN to_char(ADD_MONTHS(to_date(T1.근로계약갱신일, 'yyyymmdd'), -12),'yyyymmdd') AND to_char(T1.근로계약갱신일)
T1.근로계약갱신일 을 넣어봐도 부적합한 식별자라는 오류가 뜹니다.