Получить предыдущую запись на основе условий в Postgresql - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть две таблицы, первая содержит детали транзакции, а вторая содержит заказы пользователя:

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, но это не представляется возможным, потому что мне нужно присоединиться к другому столу, чтобы получитьДата совершения операции. Я думаю, что я должен сделать подзапрос с левым соединением, но я не понимаю, как получить только предыдущий заказ

Спасибо

1 Ответ

2 голосов
/ 06 ноября 2019

Это join и lag():

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;
...