我需要检索Random_1,Random_2,Random_3列 我的另一张表是从日期密钥9/25/2016加入数据。我还需要查看2016年9月22日的Random_1,Random_2,Random_3。我想知道如何从我的加入日期密钥说出任何日期可能会显示我以前的记录信息。 日期是日期,我使用的是Oracle (日期会改变)
怎么办呢? See link for example
答案 0 :(得分:0)
要为上一个日期提取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
,那么你不希望将不同身份的日期混合在一起。 LAG()
函数(以及几乎所有其他分析函数)除了按日期排序外,还允许partition by id
。您可以阅读Oracle documentation中的定义和示例。