前の日付のRandom_1をプルするには、LAG()を使用します そのような機能:
select ... , lag(t1.random_1) over (order by t1.date_key), .....
from table1 t1 join table2 t2 on t1.date_key = t2.date_key
...
(他の列についても同じです)。 LAG()の結果に注意してください もちろん、NULLになります 最初の行の場合-「前の」値がないため。最初の行に何か他のものが必要な場合は、すべてをCOALESCE()でラップします 。
また、idがある場合 ある種ので、idで参加します 同様に、異なるIDの日付を混在させたくない場合もあります。 LAG() 関数(および他のほとんどすべての分析関数)を使用すると、partition by idできます。 日付による注文に加えて。定義と例は、Oracleのドキュメントで読むことができます。
。