Создать таблицу журнала с расходами и балансами (FIFO) - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть таблица # pr

  • [dt] - номер операции;
  • [pr_id] - идентификатор операции;
  • [tranche_in] - сумма получено из каждого транша;
  • [cash_out] - расходы.
create table #pr (dt int, pr_id int, tranche_in money, cash_out money)
insert into #pr values
(1,101,334,null)
,(2,104,null,100)
,(3,107,1000,null)
,(4,108,null,null)
,(5,115,null,500)
,(6,118,50,null)
,(7,121,null,600)
,(8,122,930,null)
,(9,125,null,null)
,(10,130,null,120)

Каждый транш имеет идентификатор [tranche_id], например, A, B, C, D

  • A: 334
  • B: 1000
  • С: 50
  • D: 930

Первые деньги списывается с самого раннего транша "A" (метод FIFO).

Как создать таблицу типа #tranche_log? Он должен содержать журнал расходов [cash_out] и баланс [tranche_outbal] каждого транша.

create table #tranche_log (
pr_id   int, tranche_id nvarchar(1), cash_out money,    tranche_outbal money)
insert into #tranche_log values
(101,   'A',    null,   334 )
,(104,  'A',    100 ,   234 )
,(107,  'A',    null,   234 )
,(108,  'A',    null,   234 )
,(115,  'A',    234 ,   0   )
,(107,  'B',    null,   1000)
,(108,  'B',    null,   1000)
,(115,  'B',    266 ,   734 )
,(118,  'B',    null,   734 )
,(121,  'B',    600 ,   134 )
,(122,  'B',    null,   134 )
,(125,  'B',    null,   134 )
,(130,  'B',    120 ,   14  )
,(118,  'C',    null,   50  )
,(121,  'C',    null,   50  )
,(122,  'C',    null,   50  )
,(125,  'C',    null,   50  )
,(130,  'C',    null,   50  )
,(122,  'D',    null,   930 )
,(125,  'D',    null,   930 )
,(130,  'D',    null,   930 )
...