Chcete-li stáhnout Random_1 pro předchozí datum, použijte LAG()
funkce, například:
select ... , lag(t1.random_1) over (order by t1.date_key), .....
from table1 t1 join table2 t2 on t1.date_key = t2.date_key
...
(a to samé pro ostatní sloupce). Všimněte si, že výsledek LAG()
bude samozřejmě NULL
pro nejstarší řádek - protože neexistuje žádná "předchozí" hodnota. Pokud chcete pro první řádek něco jiného, zabalte vše do COALESCE()
.
Také, pokud máte id
's nějakého druhu a připojíte se pomocí id
také pak nechcete míchat dohromady data pro různá ID. LAG()
funkce (a téměř všechny další analytické funkce) vám umožňuje partition by id
kromě objednání podle data. Definici a příklady si můžete přečíst v dokumentaci Oracle
.