SELECT 'D003' JEOPSU_NO, '20141101' SDT, '20181031' EDT FROM DUAL UNION ALL SELECT 'D003' JEOPSU_NO, '20160301' SDT, '20190228' EDT FROM DUAL UNION ALL SELECT 'D003' JEOPSU_NO, '20190901' SDT, '20191223' EDT FROM DUAL
접수번호가 D003 인 사람의 근무 기간 입니다. 윤년 까지 생각하려니 쿼리짜는데 막막하네요..
원하는 결과 값은 사진과 같습니다
오라클 고수님들 많은 답변 부탁드려요 ㅠ
++ 추가 각각의 기간에 해당하는 직업이 있습니다. 최대한 간단하게 만든 데이터 입니다.
-- 날짜가 틀리네요 ㅡㅡ WITH T AS ( SELECT 'D003' JEOPSU_NO, '20141101' SDT, '20181031' EDT FROM DUAL UNION ALL SELECT 'D003' JEOPSU_NO, '20160301' SDT, '20190228' EDT FROM DUAL UNION ALL SELECT 'D003' JEOPSU_NO, '20190901' SDT, '20191223' EDT FROM DUAL ) SELECT TRUNC(TOT_DT / 12 ) AS YY , TRUNC(MOD(TOT_DT , 12 )) AS MM , ( TOT_DT - TRUNC(TOT_DT) ) * (365/12) FROM (SELECT JEOPSU_NO , SUM(MONTHS_BETWEEN ( TO_DATE(EDT) , TO_DATE(SDT))) TOT_DT FROM T GROUP BY JEOPSU_NO )
답변 감사합니다.
추가의 써놓은 글처럼 각각의 기간에는 해당하는 직무가 있습니다.
++ 날짜는 제가 임의로 넣어놓은 것은 아니고 실제 가지고 있는 데이터입니다..
SELECT 'D003' JEOPSU_NO, '보조연구원' JOB,'20141101' SDT, '20181031' EDT FROM DUAL UNION ALL SELECT 'D003' JEOPSU_NO, '조교' JOB, '20160301' SDT, '20190228' EDT FROM DUAL UNION ALL SELECT 'D003' JEOPSU_NO, '강사' JOB, '20190901' SDT, '20191223' EDT FROM DUAL
날짜는 어디가 틀렸는지 말씀해주실수 있을까요?
-- 결과만 맞췄어요. WITH T AS ( SELECT 'D003' JEOPSU_NO, '20141101' SDT, '20181031' EDT FROM DUAL UNION ALL SELECT 'D003' JEOPSU_NO, '20160301' SDT, '20190228' EDT FROM DUAL UNION ALL SELECT 'D003' JEOPSU_NO, '20190901' SDT, '20191223' EDT FROM DUAL ) SELECT TRUNC(TOT_DT / 12 ) AS YY , TRUNC(MOD(TOT_DT , 12 )) AS MM , ROUND(( TOT_DT - TRUNC(TOT_DT) ) * (365/12)) DD FROM (SELECT JEOPSU_NO , SUM(MONTHS_BETWEEN ( TO_DATE(EDT) + 1 , TO_DATE(SDT) )) TOT_DT FROM T GROUP BY JEOPSU_NO )
WITH T AS ( SELECT 'D003' JEOPSU_NO, '20141101' SDT, '20181031' EDT FROM DUAL UNION ALL SELECT 'D003' JEOPSU_NO, '20160301' SDT, '20190228' EDT FROM DUAL UNION ALL SELECT 'D003' JEOPSU_NO, '20190901' SDT, '20191223' EDT FROM DUAL ) SELECT TRUNC(TOT_DT / 12 ) AS YY , TRUNC(MOD(TOT_DT , 12 )) AS MM , ROUND(( TOT_DT - TRUNC(TOT_DT) ) * (365/12)) DD FROM (SELECT JEOPSU_NO , SUM(MONTHS_BETWEEN ( TO_DATE(EDT,'YYYYMMDD') + 1 , TO_DATE(SDT,'YYYYMMDD') )) TOT_DT FROM T GROUP BY JEOPSU_NO )
아찌님, 마농님 답변 감사합니다 ! 좋은 하루 보내세요 !