Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / сортировка по предыдущей группе строк/строке / 14 сообщений из 14, страница 1 из 1
16.06.2016, 09:44:23
    #39256824
LeVa78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
Доброго времени суток!
Если что, не судите строго :-)
Имеется набор данных изменения статуса документа по времени:

StOld StNew Ins
0 1 10.06.2016 13:49:57
1 3 10.06.2016 13:49:58
3 4 10.06.2016 13:50:01
4 3 10.06.2016 13:50:03
2 1 10.06.2016 21:11:13
3 2 10.06.2016 21:11:13
1 2 10.06.2016 21:11:13
2 1 11.06.2016 20:58:10
3 2 11.06.2016 20:58:10
1 3 11.06.2016 20:58:10
2 4 14.06.2016 10:52:30

Есть записи с одинаковой датой изменения 10.06.2016 21:11:13 и 11.06.2016 20:58:10.
Хотелось бы отсортировать смену статусов в последовательности их реальной смены.
Очевидно, что для группы статусов от 10.06.2016 21:11:13 входящим StNew является статус StOld = 3 от 10.06.2016 13:50:03 и т.п.
Т.е. на выходе хотелось бы получить:

StOld StNew Ins
0 1 10.06.2016 13:49:57
1 3 10.06.2016 13:49:58
3 4 10.06.2016 13:50:01
4 3 10.06.2016 13:50:03
3 2 10.06.2016 21:11:13
2 1 10.06.2016 21:11:13
1 2 10.06.2016 21:11:13
2 1 11.06.2016 20:58:10
1 3 11.06.2016 20:58:10
3 2 11.06.2016 20:58:10
2 4 14.06.2016 10:52:30
...
Рейтинг: 0 / 0
16.06.2016, 09:51:52
    #39256829
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
LeVa78,

Что делать, когда в течение одной секунды документ дважды побывает в одном и том же статусе?
...
Рейтинг: 0 / 0
16.06.2016, 09:53:00
    #39256831
LeVa78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
Это исключительная ситуация - допустимо сообщение об ошибке.
...
Рейтинг: 0 / 0
16.06.2016, 09:53:19
    #39256832
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
LeVa78,

Есть возможность добавить в протокол статусов поле со счётчиком?
...
Рейтинг: 0 / 0
16.06.2016, 09:54:08
    #39256834
LeVa78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
Egoр,
есть, но это не по спортивному :-)
...
Рейтинг: 0 / 0
16.06.2016, 10:01:09
    #39256841
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
LeVa78,

LeVa78не по спортивному :-) Ага. А делать навороты с поиском стартового/финишного статуса и построением переходов, которые еще и кольцеваться могут, это, по-вашему, спорт? :)
Впрочем, если в одну секунду попадает не более трех переходов, то достаточно найти именно старт и финиш.
...
Рейтинг: 0 / 0
16.06.2016, 10:05:56
    #39256845
LeVa78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
Egoр,
старт и финиш ищется легко, если известен предыдущий финиш - подсчёт количества статусов и там и там за вычетом стартового.
Тот статус, которого нечётное количество - финишный для данной группы, ну или обход по дереву.
...
Рейтинг: 0 / 0
16.06.2016, 10:09:16
    #39256849
uZverrr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
LeVa78,

а если стартовые значения выборки тож будут укладываться в 1 секунду, что будет родительским статусом?
...
Рейтинг: 0 / 0
16.06.2016, 10:14:58
    #39256855
LeVa78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
uZverrr,
начальная запись со StOld = 0 всегда единственная.
На выходе каждой группы записей и тем более одной записи, имеем вполне определённый статус для старта следующей группы.
...
Рейтинг: 0 / 0
16.06.2016, 10:53:58
    #39256897
uZverrr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
LeVa78,

если тебе нужен последний статус, то соглашусь с Egoр : расширить столбцом, например, ACTIVE_STATUS , и для последнего хранить отметку, закрывая предыдущие записи.
...
Рейтинг: 0 / 0
16.06.2016, 11:00:12
    #39256903
LeVa78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
uZverrr,
проще тогда столбцом с ИД из последовательности.
...
Рейтинг: 0 / 0
16.06.2016, 11:03:36
    #39256910
Павел Воронцов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
LeVa78,

Код: plsql
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.
26.
create table inout (in_ number(2) not null, out_ number(2) not null, eventdt date not null);

insert into inout
  select 0,1,to_date('2016-06-10 13:49:57', 'YYYY-MM-DD HH24:MI:SS') from dual union all
  select 1,2,to_date('2016-06-10 13:49:58', 'YYYY-MM-DD HH24:MI:SS') from dual union all
  select 2,3,to_date('2016-06-10 13:50:01', 'YYYY-MM-DD HH24:MI:SS') from dual union all
  select 3,2,to_date('2016-06-10 13:50:03', 'YYYY-MM-DD HH24:MI:SS') from dual union all
  select 2,4,to_date('2016-06-10 21:11:13', 'YYYY-MM-DD HH24:MI:SS') from dual union all
  select 4,1,to_date('2016-06-10 21:11:13', 'YYYY-MM-DD HH24:MI:SS') from dual union all
  select 1,4,to_date('2016-06-10 21:11:13', 'YYYY-MM-DD HH24:MI:SS') from dual union all
  select 4,2,to_date('2016-06-11 20:58:10', 'YYYY-MM-DD HH24:MI:SS') from dual union all
  select 2,3,to_date('2016-06-11 20:58:10', 'YYYY-MM-DD HH24:MI:SS') from dual union all
  select 3,2,to_date('2016-06-11 20:58:10', 'YYYY-MM-DD HH24:MI:SS') from dual union all
  select 2,5,to_date('2016-06-14 21:58:10', 'YYYY-MM-DD HH24:MI:SS') from dual union all
  select 5,1,to_date('2016-06-14 22:58:10', 'YYYY-MM-DD HH24:MI:SS') from dual
/

commit;

select in_,out_,eventdt
from (select in_, out_, eventdt, lead(eventdt) over (order by eventdt) as nxt from inout) a
connect by in_ = prior out_ 
  and eventdt = prior nxt 
start with in_ = 0 
order by eventdt, level
/
...
Рейтинг: 0 / 0
16.06.2016, 11:13:10
    #39256927
рекурсия
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
LeVa78ОчевидноНа счет очевидности сильно преувеличиваешь, из 1, 2, 3 после 0 можно сформировать шесть последовательностей. и не очевидно, что приложение не допускает запись одного и того же.
...
Рейтинг: 0 / 0
16.06.2016, 13:15:06
    #39257054
LeVa78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка по предыдущей группе строк/строке
Павел Воронцов,

спасибо!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / сортировка по предыдущей группе строк/строке / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]