2016-05-10 6 views
0

oracle SQL現在のレコード列(col1)と前のレコードのcol2を合計します。 COL2がデータベース列が、関数で計算 col2にされたとき、私はこのクエリ用ラグ機能を使用することができますoracle lag over dynamic列

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

:このような

何か。それ以外の場合、col2は動的列です。

希望の結果を生成する方法は?

+0

計算カラムを生成するクエリを表示できますか? –

+0

SQLテーブルは順序付けされていません。どのように "前のレコード"を定義していますか? –

答えて

1

lag()は、関数呼び出しで動作するはずです。あなたが好きなら、あなたはこれを行うことができます。

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

注:これは順序が問題になっている例与えられた合理的なようだcol1、によって指定されていることを前提としています。

+0

が機能しない、エラーが発生しました: ORA-00938:関数の引数が不十分です – SYSMAN