У меня есть набор данных с одной записью в день на одну сущность.Каждый день будет иметь только один статус, но статус может появляться в течение нескольких дней или только в один день.
Я хочу сгруппировать их в эпизоды.Поэтому, когда идентификатор изменяется, СОСТОЯНИЕ изменяется ИЛИ следующая запись находится на расстоянии более суток, и я хочу считать это новым эпизодом.
Я поиграл с аналитическими функциями, но, хотя я могу группировать по статусу, я затемне отслеживать каждый набор дней (хотя потенциально я мог бы сделать это за один проход на статус)
Я также мог бы сделать это в PL / SQL, но это невероятно медленно в моем тестировании.Я надеюсь, что есть способ выполнить это как запрос или, по крайней мере, частично предварительно обработать как запрос, чтобы цикл pl / sql был быстрее.
ID DAY STATUS Comment
E0000000000054245349 27-Feb-16 24 Start
E0000000000054245349 28-Feb-16 24
E0000000000054245349 29-Feb-16 24
E0000000000054245349 1-Mar-16 24
E0000000000054245349 3-Mar-16 21 Gap & new status
E0000000000054245349 4-Mar-16 21
continuing daily
E0000000000054245349 12-Mar-16 21
E0000000000054245349 13-Mar-16 21
E0000000000054245349 14-Mar-16 21
E0000000000054245349 15-Mar-16 40 No gap, but new status
E0000000000054245349 16-Mar-16 40
E0000000000054245349 18-Mar-16 40 Gap, no new status
E0000000000054245349 19-Mar-16 40
E0000000000054245349 1-Jan-17 21 Gap & new status
E0000000000054245349 2-Jan-17 21
E0000000000054245349 3-Jan-17 21
E0000000000054245349 5-Jan-17 25 Gap, status and single day
Мой идеальный набор данных хотел бы что-то вроде этого,Бонусные баллы, если он содержит предыдущий / следующий статус для записей, которые находятся за 1 день до / после, но я всегда могу получить их с последующим запросом, если это будет необходимо
ID START END STATUS
E0000000000054245349 27-Feb-16 1-Mar-16 24
E0000000000054245349 3-Mar-16 14-Mar-16 21
E0000000000054245349 15-Mar-16 16-Mar-16 40
E0000000000054245349 18-Mar-16 19-Mar-16 40
E0000000000054245349 1-Jan-17 3-Jan-17 21
E0000000000054245349 5-Jan-17 5-Jan-17 25