отставание оракула от динамического столбца

в Oracle SQL я хочу суммировать текущий столбец записи (col1) с col2 из предыдущей записи.

что-то вроде этого:

col1         col2
-----        ----
  10          300
  12          312
  20          332
  50          382

Я могу использовать функцию задержки для этого запроса WHEN col2 является столбцом базы данных, но col2 вычисляется с помощью функции. в противном случае col2 является динамическим столбцом.

Теперь, как сгенерировать желаемый результат?


person SYSMAN    schedule 10.05.2016    source источник
comment
Можете ли вы показать нам запрос, который генерирует вычисляемый столбец?   -  person Tim Biegeleisen    schedule 10.05.2016
comment
Таблицы SQL неупорядочены. Как вы определяете предыдущую запись?   -  person Gordon Linoff    schedule 10.05.2016


Ответы (1)


lag() должен работать с вызовами функций. Если хотите, вы можете сделать это:

with t(col1, col2) as (
      select . . .
     )
select (col1 + coalesce(lag(col2) over (order by col1), 0) as thesum
from t;

Примечание: это предполагает, что порядок определяется col1, что кажется разумным, учитывая пример в вопросе.

person Gordon Linoff    schedule 10.05.2016
comment
не работает, я получил ошибку: ORA-00938: недостаточно аргументов для функции - person SYSMAN; 11.05.2016