사원번호 적용일 날짜 AMPM 시간간격 시작시간 종료시간
6482 20190115 2(월) 0 10 830 1300
6482 20190115 2(월) 1 10 1400 1730
6482 20190115 3(화) 0 10 830 1300
6482 20190115 3(화) 1 10 1400 1730
6482 20190115 4(수) 0 10 830 1300
6482 20190115 4(수) 1 10 1400 1730
6482 20190115 5(목) 0 10 830 1300
6482 20190115 5(목) 1 10 1400 1730
6482 20190115 6(금) 0 10 830 1300
6482 20190115 6(금) 1 10 1400 1730
6482 20190115 7(토) 0 10 830 1230
이런식으로 사원별로 시간표 테이블이 있는데요
저 시간간격 기준으로 나눠서 조회하는 방법이 있을까요?
예를들어서
6482 20190155 월 오전 830 840
6482 20190155 월 오전 840 850
6482 20190155 월 오전 850 900
6482 20190155 월 오전 910 920
이런식으로 풀어서 조회를해야합니다... 가능할까요 도움부탁드립니다.
WITH t AS ( SELECT 6482 eno, '20190115' dt, '2(월)' dy, 0 ampm, 10 itv, 830 stm, 1300 etm FROM dual UNION ALL SELECT 6482, '20190115', '2(월)', 1, 10, 1400, 1730 FROM dual UNION ALL SELECT 6482, '20190115', '3(화)', 0, 10, 830, 1300 FROM dual UNION ALL SELECT 6482, '20190115', '3(화)', 1, 10, 1400, 1730 FROM dual UNION ALL SELECT 6482, '20190115', '4(수)', 0, 10, 830, 1300 FROM dual UNION ALL SELECT 6482, '20190115', '4(수)', 1, 10, 1400, 1730 FROM dual UNION ALL SELECT 6482, '20190115', '5(목)', 0, 10, 830, 1300 FROM dual UNION ALL SELECT 6482, '20190115', '5(목)', 1, 10, 1400, 1730 FROM dual UNION ALL SELECT 6482, '20190115', '6(금)', 0, 10, 830, 1300 FROM dual UNION ALL SELECT 6482, '20190115', '6(금)', 1, 10, 1400, 1730 FROM dual UNION ALL SELECT 6482, '20190115', '7(토)', 0, 10, 830, 1230 FROM dual ) SELECT eno, dt, dy, ampm, itv , TO_NUMBER(TO_CHAR(s + (lv-1)*10 /24/60, 'hh24mi')) stm , TO_NUMBER(TO_CHAR(s + (lv-0)*10 /24/60, 'hh24mi')) etm , lv FROM (SELECT eno, dt, dy, ampm, itv, stm, etm , TO_DATE(LPAD(stm, 4, '0'), 'hh24mi') s , TO_DATE(LPAD(etm, 4, '0'), 'hh24mi') e FROM t ) , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 99) WHERE lv <= (e - s) * 24*60 / 10 ORDER BY eno, dt, dy, ampm, lv ;