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

Откуда: Запиндрищинск
Сообщений: 49
Рассмотрим на примере:
with t as
(select group_.id ppid,sub_group.pid,sub_group.name,elem.id
from
 (select 555 id from dual union all
  select 777 id from dual) group_,
 (select 777 ppid,4 pid,'first2' name from dual union all
  select 555 ppid,1 pid,'first1' name from dual union all
  select 777 ppid,7 pid,'next2' name from dual) sub_group,
 (select 4 pid,'a' id from dual union all
  select 4 pid,'b' id from dual union all
  select 7 pid,'c' id from dual union all
  select 7 pid,'d' id from dual union all
  select 7 pid,'e' id from dual union all
  select 1 pid,'h' id from dual union all
  select 1 pid,'i' id from dual)  elem
where group_.id=sub_group.ppid and sub_group.pid=elem.pid
order by group_.id,sub_group.pid,elem.id)
select 0 group_N,t.ppid,0 sub_group_N,t.pid,row_number() over(partition by pid order by id) elem_N,t.id from t

Получаем:
GROUP_NPPIDSUB_GROUP_NPIDELEM_NID
0555011h
0555012i
0777041a
0777042b
0777071c
0777072d
0777073e

Нужно получить последовательные номера групп и подгрупп в группах:
GROUP_NPPIDSUB_GROUP_NPIDELEM_NID
1555111h
1555112i
2777141a
2777142b
2777271c
2777272d
2777273e

Каким должен быть текст запроса? Или, хотя бы, в каком направлении копать?
7 авг 12, 04:35    [12972378]     Ответить | Цитировать Сообщить модератору
 Re: Нумерация групп записей по порядку.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54387
По группе dense_rank
А по сабгруппе непонятен принцип нумерации
7 авг 12, 07:38    [12972449]     Ответить | Цитировать Сообщить модератору
 Re: Нумерация групп записей по порядку.  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
urdada,

если пытаться угадать что sub_group_N нужно сортировать по pid, то тогда по моему тебя нужен такой селект:

select dense_rank() over(order by ppid) group_N,
       t.ppid,
       dense_rank() over(order by pid) sub_group_N,
       t.pid,
       row_number() over(partition by pid order by id) elem_N,
       t.id from t
7 авг 12, 08:14    [12972507]     Ответить | Цитировать Сообщить модератору
 Re: Нумерация групп записей по порядку.  [new]
-2-
Member

Откуда:
Сообщений: 15330
partition by ppid
7 авг 12, 09:18    [12972704]     Ответить | Цитировать Сообщить модератору
 Re: Нумерация групп записей по порядку.  [new]
urdada
Member

Откуда: Запиндрищинск
Сообщений: 49
Всем спсибо.
select dense_rank() over(order by ppid) group_N,
       t.ppid,
       dense_rank() over(partition by ppid order by pid) sub_group_N,
       t.pid,row_number() over(partition by pid order by id) elem_N,t.id...

- то что нужно.
7 авг 12, 13:04    [12974649]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить