Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как организовать инкрементное поля по блокам в запросе  [new]
Сргей
Member

Откуда:
Сообщений: 3
Пожалуйсто помогите кто сможет!

Есть запрос
  select o.*,  decode(level_no+1, lead(level_no) over (order by rn), 'Узел', 'Лист') as type 
from
( select rownum as rn, level as level_no
FROM SCQ_SCN t
CONNECT BY PRIOR t.id = t.scn_owner
START WITH t.scn_owner is null
) o

результат --------- + --- требуется ----
rn level_no type "Новое поле"
------------------------------------------------------------
1 1 Узел -----| 1
2 2 Узел > группа 1 1
4 3 Лист | 1
5 3 Лист ----- 1
6 1 Узел------| 2
7 2 Узел > группа 2 2
8 3 Лист------| 2
2 июн 08, 23:57    [5749787]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать инкрементное поля по блокам в запросе  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2506
Если версия сервера >= 9i, то sys_connect_by_path + decode тебе в помощь.
3 июн 08, 05:16    [5749941]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать инкрементное поля по блокам в запросе  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2506
Ну или как вариант:

select o.*,  decode(level_no+1, lead(level_no) over (order by rn), 'Узел', 'Лист') as type,
       sum(xyz) over(order by rn) as "Новое поле"
      from 
      ( select rownum as rn, level as level_no, 
               decode(level,1,level) as xyz
          FROM SCQ_SCN t
          CONNECT BY PRIOR t.id = t.scn_owner
          START WITH t.scn_owner is null
      ) o 
3 июн 08, 05:47    [5749954]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить