пятница, 17 апреля 2020 г.

По таблицам Income и Outcome для каждого пункта приема найти остатки денежных средств на конец каждого дня

Задание: 69 (Serge I: 2011-01-06)
По таблицам Income и Outcome для каждого пункта приема найти остатки денежных средств на конец каждого дня, 
в который выполнялись операции по приходу и/или расходу на данном пункте. 
Учесть при этом, что деньги не изымаются, а остатки/задолженность переходят на следующий день. 
Вывод: пункт приема, день в формате "dd/mm/yyyy", остатки/задолженность на конец этого дня.
with t as
(
  select point, "date", inc, 0 AS "out" from income
  union all
  select point, "date", 0 AS inc, "out" from outcome
)
SELECT t.point, TO_CHAR ( t."date", 'DD/MM/YYYY') AS day,
 ( select SUM(i.inc) from t i
   where i."date" <= t."date" and i.point = t.point )
-
( select SUM(i."out") from t i
  where i."date" <= t."date" and i.point = t.point ) AS rem
from t
group by t.point, t."date"