Рассмотрим таблицу
with test_tbl as (
select 5 as curuid, 7 as prevuid, 40 amount, 'increase by 20' reason from dual
union
select 7 as curuid,10 as prevuid,20 amount ,'decrease by 10' reason from dual
union
select 10 as curuid,null as prevuid,30 amount, null reason from dual
union
select 4 as curuid,null as prevuid,50 amount, null reason from dual
)
select * from test_tbl
Каждая запись имеет current uid
и amount
.
Теперь, каждый раз, когда происходит изменение amount
, создается новая запись с новым uid
, а ее предыдущий uid
устанавливается равным uid
изменяемой записи, а также причинаизменения установлены.
Таким образом, uid 5 происходит от uid 7, увеличенного на 20, что, в свою очередь, происходит от uid 10, увеличенного на 10. uid = 10 был исходной записью.
Я хотел бы создать sql, который будет принимать uid в качестве параметра и будет возвращать всю историю для данного uid.
Из приведенного выше примера запрос вернет все записи, кроме записи с curuid = 4 (которая не имеет никакого отношения к истории записи 5)
5 7 40 increase by 20
7 10 20 decrease by 10
10 30
Anyидеи как это сделать?