Выделение группы over () .........RANGE between .................

HOME_X
Дата: 27.11.2009 17:14:19
Творческого дня господа !

Имею вопрос - подскажите чем лучше сделать !
Необходимо выделить группу ...

Есть массив

  F1     F2
  Null    09
  10     10
  11     11
  12     12
  Null   13
  Null   14
  15     15
  16     16

Необходимо вернуть
  F1     F2     F3
  Null    09    Null
  10     10     10 
  11     11     10 
  12     12     10
  Null   13     Null
  Null   14     Null
  15     15     15
  16     16     15 

Т.е функция которая бы вернула Min значение в последовательсности строк
начало последовательности считать строку где F1 = Null
использовать partition нет возможности - сама группа в процессе создания
Хочу использовать
over(order by F2 range between ...............)
но у меня есть только логического значение на опрееделение диапазона ...
а нужен параметр веса ...

Благодарен и признателен !
suPPLer
Дата: 27.11.2009 17:33:13
HOME_X,

with t as (select case when level not in (1, 5, 6) then level+8 end f1, level + 8 f2 from dual connect by level <= 8)
select f1, f2, nvl2(f1, first_value(f1) over(partition by gn order by f1 nulls last), f1)
  from (select f1, f2, sum(nvl2(f1, 0, 1)) over(order by f2) gn
          from t) x
 order by f2          
;
_Alex_SMIRNOV_
Дата: 27.11.2009 17:36:00
HOME_X
Дата: 27.11.2009 17:59:57
suPPLer
HOME_X,

select f1, 
         f2, 
         sum(nvl2(f1, 0, 1)) over(order by f2) gn
  from t


Уважаемый suPPLer - sum(nvl2(f1, 0, 1)) over(order by f2) -
этого более чем достаточно для образования номера группы


Очень Вам благодарен !!!