시간설정 기준값 컬럼은 2개가 있구요 분과 시를 표시합니다.
예를들어 A, B, C 3개의 스케줄이 있다면
C_MIN C_HOUR
A 01,03,58 09 : 09시 01분, 03분, 58분에 가동하라
B 02 * : 매시간(*) 02분마다 가동하라
C 03 00,01,16,23 : 00시 01시 16시 23시의 03분에 가동하라
이런의미가 됩니다.
그런데 해당 시간, 분의 항목에 1을 표시해서 뿌려보고 싶습니다.
00시 01시 ..... .... 09시 ...... 23시
00 01 02 03 ... 59 00 01 02 03 ... 59 00 01 02 03 .... 58 59 ... 00 01 02 03 ... 59
A 1 1 1 ...
B 1 1 1 ... 1
C 1 1 1
CONNECT BY ?! 써야 되는건지 어떻게 해야 되는건지...전혀 감이 안오네요 ㅠㅠ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | WITH t AS ( SELECT 'A' id, '01,03,58' c_min, '09' c_hour FROM dual UNION ALL SELECT 'B' , '02' , '*' FROM dual UNION ALL SELECT 'C' , '03' , '00,01,16,23' FROM dual ) SELECT * FROM ( SELECT id , hh , TO_NUMBER(mi) mi FROM ( SELECT LPAD( LEVEL - 1, 2, '0' ) hh FROM dual CONNECT BY LEVEL <= 24) a , ( SELECT LPAD( LEVEL - 1, 2, '0' ) mi FROM dual CONNECT BY LEVEL <= 60) b , t c WHERE (INSTR(c_hour, hh) > 0 OR c_hour = '*' ) AND (INSTR(c_min , mi) > 0 OR c_min = '*' ) ) PIVOT ( COUNT (*) FOR mi IN ( 00, 01, 02, 03, 04, 05, 06, 07, 08, 09 , 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 , 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 , 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 , 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 , 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 ) ) ORDER BY id, hh ; |