根据Postgresql中的条件获取以前的记录

我有两个表,第一个表包含交易明细,第二个表包含用户的订单:

id | transaction_date
1  |   2019-01-01 
2  |   2019-02-01
3  |   2019-01-01


id | transaction_id | amount | user_id
15         1            7       1           
20         2            15      1
25         3            25      1

我想得到这个结果,也就是说,对于所有用户,订单还具有他根据交易日期支付的先前金额。

user_id | amount | previous amount
   1         7           NULL
   1         15           7
   1         25           15

我尝试了包括使用LAG函数在内的多种方法,但是似乎无法实现,因为我必须加入另一个表才能获得transaction_date。我想我应该使用左联接进行子查询,但是我不知道如何只获得前一个订单

谢谢

soyi8 回答:根据Postgresql中的条件获取以前的记录

这是joinlag()

select t2.user_id,t2.amount,lag(t2.amount) over (partition by t2.user_id order by t1.date) as prev_amount
from table1 t1 join
     table2 t2
     on t2.transaction_id = t1.id;
本文链接:https://www.f2er.com/3149691.html

大家都在问