위치가 연속되는 데이터를 그룹핑해서 시작일자와 종료일자를 표시 하려고합니다.
쉽게 될줄알았는데 잘안되네요.
START_DATE END_DATE LOC
30-10-2019 06:30 30-10-2019 06:40 이동
30-10-2019 06:40 30-10-2019 06:50 이동
30-10-2019 06:50 30-10-2019 07:00 이동
30-10-2019 07:00 30-10-2019 07:10 Zone9
30-10-2019 07:10 30-10-2019 07:20 이동
30-10-2019 07:20 30-10-2019 07:30 Zone6
30-10-2019 07:30 30-10-2019 07:40 Zone6
30-10-2019 07:40 30-10-2019 07:50 Zone4
30-10-2019 07:50 30-10-2019 08:00 Zone6
30-10-2019 08:00 30-10-2019 08:10 이동
30-10-2019 08:10 30-10-2019 08:20 이동
최종모습 ->
START_DATE END_DATE LOC
30-10-2019 06:30 30-10-2019 07:00 이동
30-10-2019 07:00 30-10-2019 07:10 Zone9
30-10-2019 07:10 30-10-2019 07:20 이동
30-10-2019 07:20 30-10-2019 07:40 Zone6
30-10-2019 07:40 30-10-2019 07:50 Zone4
30-10-2019 07:50 30-10-2019 08:00 Zone6
30-10-2019 08:00 30-10-2019 08:20 이동
WITH t AS ( SELECT '2019-10-30 06:30' start_date, '2019-10-30 06:40' end_date, '이동' loc FROM dual UNION ALL SELECT '2019-10-30 06:40', '2019-10-30 06:50', '이동' FROM dual UNION ALL SELECT '2019-10-30 06:50', '2019-10-30 07:00', '이동' FROM dual UNION ALL SELECT '2019-10-30 07:00', '2019-10-30 07:10', 'Zone9' FROM dual UNION ALL SELECT '2019-10-30 07:10', '2019-10-30 07:20', '이동' FROM dual UNION ALL SELECT '2019-10-30 07:20', '2019-10-30 07:30', 'Zone6' FROM dual UNION ALL SELECT '2019-10-30 07:30', '2019-10-30 07:40', 'Zone6' FROM dual UNION ALL SELECT '2019-10-30 07:40', '2019-10-30 07:50', 'Zone4' FROM dual UNION ALL SELECT '2019-10-30 07:50', '2019-10-30 08:00', 'Zone6' FROM dual UNION ALL SELECT '2019-10-30 08:00', '2019-10-30 08:10', '이동' FROM dual UNION ALL SELECT '2019-10-30 08:10', '2019-10-30 08:20', '이동' FROM dual ) SELECT MIN(start_date) start_date , MAX(end_date ) end_date , loc FROM (SELECT start_date, end_date, loc , ROW_NUMBER() OVER(ORDER BY start_date) - ROW_NUMBER() OVER(PARTITION BY loc ORDER BY start_date) gb FROM t ) GROUP BY loc, gb ORDER BY start_date ;