select
..........
where a.wk_status_cd in ('10', '20', '30')
급여를 구하는 쿼리인데요,
위 10,20,30이 각각 재직, 퇴사, 휴직 상태코드입니다.
그 중 퇴직한 사원은 퇴사일자(wk_end_ymd)가 급여를 조회하는 해당년월(sum_ym)이라면
출력하고, 그렇지 않으면 안나오게 해야되며,
휴직은 신청일자 중 휴직시작일(to_date) 와 휴직종료일(from_date)이
해당년월과 같을 때 출력하고, 같지 않으면 출력하지 않게 나와야 합니다.
인터넷 열심히 찾아봤는데 어떻게 검색해야 제가 찾는 답이 나올지도 모르겠더라구요ㅠ
문제를 해결할 수 있게 도와주시면 감사합니다!
wk_status_cd 컬럼은 인사 정보 테이블에 있을 것 같은데 급여정보 테이블과 조인해야 하는 거죠? 급여정보 테이블에 1년치 급여가 미리 계산되어있는 건가요? 한달 단위로 생성한다면 생성시에 퇴직한 직원 급여정보는 생성되지 않을 것 같은데.. 테이블 구조부터 좀 알려주셔야 대강이라도 쿼리를 만들 수 있을 것 같은데요.
SUM_YM 형식이 문자형 'YYYYMM'으로 저장된다고 보고..
WK_END_YMD에는 퇴직일자만 들어가고
FROM_DATE와 TO_DT에는 휴직 정보(날짜형)만 들어간다고 보고 대충 짜보면..
SELECT ...
FROM 인사 A, 급여 B
WHERE A.사원번호 = B.사원번호
AND B.SUM_YM = '해당년월'
AND TO_CHAR(NVL(A.WK_END_YMD,TO_DATE('2999-12-31','YYYY-MM-DD')),'YYYYMM') >= B.SUM_YM
AND (NVL(TO_CHAR(A.FROM_DATE,'YYYYMM'),B.SUM_YM) = B.SUM_YM
OR NVL(TO_CHAR(A.TO_DATE,'YYYYMM'),B.SUM_YM) = B.SUM_YM)
이런 식일 것 같은데요.