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

Откуда:
Сообщений: 41
Можно ли приведенные ниже 2 запроса свести к одному?

 ДАНО: SELECT * from tmp_s1 order by 1 ;
SID OID PA PB PC
1 1 2 a b
2 2 2 a
3 3 3 q b c
4 4 5 d c
5 5 5 d f e
6 6 6 e
7 7 7 f
8 8 8 Z
9 9 9 w Z
10 11 11 U
CREATE TABLE tmp_s2t AS 
SELECT s.sid,
       s.oid AS cur_oid,
       NVL2(s.pb, max(s.oid) OVER (PARTITION BY s.pb), s.oid) as new_oid,
       s.PA,
       s.PB,
       s.PC
FROM   tmp_s1 s
;

create table tmp_s2 as 
SELECT s.sid,
       max(s. new_oid) OVER (PARTITION BY s.cur_oid) AS OID,
       s.PA,
       s.PB,
       s.PC
FROM   tmp_s2t s


P.S. NVL там стоит неспроста, без него результат неверный.
P.P.S. Oracle 10g. Размер исходной таблицы около 100 млн. строк.
30 мар 09, 18:24    [6995104]     Ответить | Цитировать Сообщить модератору
 Re: объединение аналитических функций  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
plogenius,

а в чём вопрос?
создать две таблицы одной командой - нельзя.
посчитать два аналитических значения с разными окнами в одном запросе - запросто.
30 мар 09, 18:30    [6995132]     Ответить | Цитировать Сообщить модератору
 Re: объединение аналитических функций  [new]
plogenius
Member

Откуда:
Сообщений: 41
orawish,

Интересует последняя, результирующая таблица. Таблица tmp_s2t здесь - временная, вот и хочется обойтись без нее.

Проблема в том, что вторая аналитическая функции работает над резульнатом первой...
А вложенный запрос select from (select ...) при указанном объеме таблицы у меня вызывает смутные сомнение.
30 мар 09, 18:37    [6995162]     Ответить | Цитировать Сообщить модератору
 Re: объединение аналитических функций  [new]
5/OS
Guest
обрернуть вложеным запросом...
30 мар 09, 18:40    [6995173]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить