2016-05-10 24 views
0

in Oracle SQL Ich möchte aktuelle Datensatzspalte (Spalte1) mit Spalte2 aus vorherigen Datensatz summieren.Orakel Verzögerung über dynamische Spalte

etwas wie folgt aus:

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

I Verzögerungsfunktion für diese Abfrage verwenden können WHEN col2 Datenbankspalte ist aber col2 mit einer Funktion berechnet. ansonsten ist col2 eine dynamische Spalte.

Jetzt, wie man das gewünschte Ergebnis erzeugt?

+0

Können Sie uns die Abfrage zeigen, die die berechnete Spalte generiert? –

+0

SQL-Tabellen sind ungeordnet. Wie definierst du "vorheriger Rekord"? –

Antwort

1

lag() sollte mit Funktionsaufrufen arbeiten. Wenn Sie möchten, können Sie dies tun:

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

Hinweis: Dies setzt voraus, dass die Bestellung von col1 angegeben wird, die angesichts dem Beispiel in der Frage sinnvoll erscheint.

+0

nicht funktionieren, habe ich Fehler: ORA-00938: nicht genug Argumente für die Funktion – SYSMAN