Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ранжировать по логической группе / 4 сообщений из 4, страница 1 из 1
19.11.2018, 22:11
    #39735347
Landgraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ранжировать по логической группе
Ребята всем привет!

Подскажите, пожалуйста, как можно выделить логический блок и ранжировать его? Есть таблица с данными, логический блок начинается с записи Start и идет до тех пор пока не встретит новую запись Start. Если встречается новая запись Start, то начинается новый блок. Данные в таблице уже отсортированы.

Тестовые данные:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
With TestTable (id, ndate, code) as
    (select 1, trunc(sysdate),'start' from dual union all
    select 2, trunc(sysdate),'a' from dual union all
    select 3, trunc(sysdate),'b' from dual union all
    select 4, trunc(sysdate),'start' from dual union all
    select 5, trunc(sysdate),'a' from dual)
    



idndatecode119.11.18start219.11.18a319.11.18b419.11.18start519.11.18a

Хотелось бы ранжировать группу, для дальнейшей работы с ней. Вот так:

idndatecodeРанг119.11.18start1219.11.18a1319.11.18b1419.11.18start2519.11.18a2

Не могу сообразить, как написать запрос.
...
Рейтинг: 0 / 0
19.11.2018, 22:39
    #39735353
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ранжировать по логической группе
STFF start_of_group
Код: plsql
1.
sum(case code when 'start' then 1 end) over (order by id) as group_no

...
Рейтинг: 0 / 0
19.11.2018, 22:42
    #39735355
feagor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ранжировать по логической группе
Landgraf,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
With t (id, ndate, code) as
    (select 1, trunc(sysdate),'start' from dual union all
    select 2, trunc(sysdate),'a' from dual union all
    select 3, trunc(sysdate),'b' from dual union all
    select 4, trunc(sysdate),'start' from dual union all
    select 5, trunc(sysdate),'a' from dual)
    SELECT sum(sog) over (order by id)rn,tt.* FROM ( SELECT case code when 'start' then 1 else 0 end sog,t.*  FROM t) tt
    
...
Рейтинг: 0 / 0
19.11.2018, 23:04
    #39735360
Landgraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ранжировать по логической группе
Спасибо комрады!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ранжировать по логической группе / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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