计算数据中存在的上一个日期

时间:2018-01-25 18:53:22

标签: sql oracle

以下是我的数据集,我需要计算以前的交易日期列

Client  Account No  Trade Date  Amount  Previous Transaction Date
A        1          1/1/2016    10        -
A        2          1/2/2015    20        -
A        3          1/3/2015    30        -
A        1          1/4/2017    40        1/1/2016
A        2          1/5/2017    50        1/2/2015
B        1          1/6/2017    60        -
A        2          1/7/2017    70        1/5/2017

我如何以最有效的方式完成工作,因为我拥有庞大的数据。需要在Oracle SQl中完成

2 个答案:

答案 0 :(得分:2)

这是lag窗口函数的直接应用。

select t.*
,lag(trade_date) over(partition by client,account_no order by trade_date) as prev_txn_date
from tbl t

答案 1 :(得分:0)

其他方法是创建一个函数并在查询中使用它,请参阅下面的示例代码,

10.5