OPRT_STGY_ID TOT_GB_CD BUDY_CD ALRM_STP_GB_CD ST_TM ED_TM STND_SCORE
M001 M N A 0 9 00
M001 M N A 10 23 30
M001 M N C 0 9 50
M001 M N C 10 23 0
M001 S N A 0 9 00
M001 S N A 10 23 30
M001 S N C 0 9 50
M001 S N C 10 23 0
위와같은 구조에서 ST_TM ~ ED_TM을 연속적인 시간데이터로 출력하고싶습니다.
OPRT_STGY_ID TOT_GB_CD BUDY_CD ALRM_STP_GB_CD TM STND_SCORE
M001 M N A 00 00
M001 M N A 01 00
M001 M N A 02 00
M001 M N A 03 00
.
.
.
M001 M N A 10 30
M001 M N A 11 30
M001 M N A 12 30
M001 M N A 13 30
M001 M N A 14 30
방법을 찾지못해서 질문드려요..
위처럼 하기위한 목적은 OPRT_STGY_ID,BUDY_CD,ALRM_STP_GB_CD와 시간별로 그루핑하여
TOT_GB_CD별로 SCORE를 뽑고 싶어서입니다. 현재 구조에서는 시간별 그루핑이 안되서
차선책을 찾고있었는데 혹시 다른방법도 있을가요? ㅠㅠ
DB는 MariaDB입니다. 감사합니다.
추가) ST_TM, ED_TM 은 고정값이 아닌 가변값입니다.
0~9, 10~23 || 0~3, 4~23 || 0~23 || 0~15, 16~23
중복된 값은 없습니다.
SELECT a.oprt_stgy_id, a.tot_gb_cd, a.budy_cd, a.alrm_stp_gb_cd , b.tm , a.stnd_score FROM (SELECT 'M001' oprt_stgy_id, 'M' tot_gb_cd, 'N' budy_cd, 'A' alrm_stp_gb_cd , 0 st_tm, 9 ed_tm, '00' stnd_score UNION ALL SELECT 'M001', 'M', 'N', 'A', 10, 23, '30' UNION ALL SELECT 'M001', 'M', 'N', 'C', 0, 9, '50' UNION ALL SELECT 'M001', 'M', 'N', 'C', 10, 23, '00' UNION ALL SELECT 'M001', 'S', 'N', 'A', 0, 9, '00' UNION ALL SELECT 'M001', 'S', 'N', 'A', 10, 23, '30' UNION ALL SELECT 'M001', 'S', 'N', 'C', 0, 9, '50' UNION ALL SELECT 'M001', 'S', 'N', 'C', 10, 23, '00' ) a INNER JOIN (SELECT '00' tm UNION ALL SELECT '01' UNION ALL SELECT '02' UNION ALL SELECT '03' UNION ALL SELECT '04' UNION ALL SELECT '05' UNION ALL SELECT '06' UNION ALL SELECT '07' UNION ALL SELECT '08' UNION ALL SELECT '09' UNION ALL SELECT '10' UNION ALL SELECT '11' UNION ALL SELECT '12' UNION ALL SELECT '13' UNION ALL SELECT '14' UNION ALL SELECT '15' UNION ALL SELECT '16' UNION ALL SELECT '17' UNION ALL SELECT '18' UNION ALL SELECT '19' UNION ALL SELECT '20' UNION ALL SELECT '21' UNION ALL SELECT '22' UNION ALL SELECT '23' ) b ON b.tm BETWEEN a.st_tm AND a.ed_tm ORDER BY a.oprt_stgy_id, a.tot_gb_cd, a.budy_cd, a.alrm_stp_gb_cd, b.tm ;