Итак, я действительно нашел ответ на свой вопрос. Я сделал несколько шагов.
Сначала я решил немного упорядочить вещи, добавив столбец, отражающий сумму сборов, платежей, корректировок и bad_debt. Это пригодится позже для подведения итогов. Это казалось немного "хакерским", но я только учусь, ну и что угодно.
sum(CHARGE_AMOUNT)+sum(VOID_AMOUNT)+sum(PAYMENT_AMOUNT)+
sum(ADJUSTMENT_AMOUNT)+sum(ACTIVE_AR_IN_OUT) as sum_of_values
Во-вторых, я создал промежуточный итог. Изначально это была сложная задача, потому что я не мог ссылаться на месяц и год, если не указывал псевдоним как month_year и не помещал его в подзапрос в предложении FROM.
FROM
(SELECT
CASE WHEN POST_DATE BETWEEN '2019-06-01' AND '2019-06-30' THEN 'June - 2019'
WHEN POST_DATE BETWEEN '2019-07-01' AND '2019-07-31' THEN 'July - 2019'
WHEN POST_DATE BETWEEN '2019-08-01' AND '2019-08-31' THEN 'August - 2019'
ELSE 'Other' END as month_year,
(SELECT sum(OUTSTANDING_AMT)
FROM ARPB_TRANSACTIONS
WHERE POST_DATE BETWEEN '2019-05-01' AND '2019-05-31') as beginning_balance,
sum(CHARGE_AMOUNT)+sum(VOID_AMOUNT) as charge_tot,
sum(PAYMENT_AMOUNT) as payment_tot,
sum(ADJUSTMENT_AMOUNT) as adjustment_tot,
sum(ACTIVE_AR_IN_OUT) as bad_debt_tot,
sum(CHARGE_AMOUNT)+sum(VOID_AMOUNT)+sum(PAYMENT_AMOUNT)+
sum(ADJUSTMENT_AMOUNT)+sum(ACTIVE_AR_IN_OUT) as sum_of_values
FROM F_ARPB_CUBE_ETR_DETAIL
WHERE POST_DATE BETWEEN '2019-06-01' AND '2019-08-31'
GROUP BY CASE
WHEN POST_DATE BETWEEN '2019-06-01' AND '2019-06-30' THEN 'June - 2019'
WHEN POST_DATE BETWEEN '2019-07-01' AND '2019-07-31' THEN 'July - 2019'
WHEN POST_DATE BETWEEN '2019-08-01' AND '2019-08-31' THEN 'August - 2019'
ELSE 'Other' END ) as x
В-третьих, тогда это позволило мне конкретно указать «месяц_год» в моем выражении итоговой суммы:
SELECT month_year, beginning_balance,charge_tot, payment_tot, adjustment_tot, bad_debt_tot, sum_of_values, SUM(sum_of_values) OVER (ORDER BY month_year desc) as running_total
Последнее, вместо текущего (итогового) итога, мне действительно нужнотекущее вычитание из промежуточных итогов за предыдущие месяцы (то есть, «начальный_баланс» за вычетом «сумма_значений»), поэтому для этого я просто изменил приведенное выше выражение следующим образом:
SELECT month_year, beginning_balance,charge_tot, payment_tot, adjustment_tot, bad_debt_tot, sum_of_values, beginning_balance-SUM(sum_of_values) OVER (ORDER BY month_year desc) as running_total
Итак, вот последний запрос:
SELECT month_year, beginning_balance,charge_tot, payment_tot, adjustment_tot, bad_debt_tot, sum_of_values, beginning_balance-SUM(sum_of_values) OVER (ORDER BY month_year desc) as running_total
FROM
(SELECT
CASE WHEN POST_DATE BETWEEN '2019-06-01' AND '2019-06-30' THEN 'June - 2019'
WHEN POST_DATE BETWEEN '2019-07-01' AND '2019-07-31' THEN 'July - 2019'
WHEN POST_DATE BETWEEN '2019-08-01' AND '2019-08-31' THEN 'August - 2019'
ELSE 'Other' END as month_year,
(SELECT sum(OUTSTANDING_AMT)
FROM ARPB_TRANSACTIONS
WHERE POST_DATE BETWEEN '2019-05-01' AND '2019-05-31') as beginning_balance,
sum(CHARGE_AMOUNT)+sum(VOID_AMOUNT) as charge_tot,
sum(PAYMENT_AMOUNT) as payment_tot,
sum(ADJUSTMENT_AMOUNT) as adjustment_tot,
sum(ACTIVE_AR_IN_OUT) as bad_debt_tot,
sum(CHARGE_AMOUNT)+sum(VOID_AMOUNT)+sum(PAYMENT_AMOUNT)+
sum(ADJUSTMENT_AMOUNT)+sum(ACTIVE_AR_IN_OUT) as sum_of_values
FROM F_ARPB_CUBE_ETR_DETAIL
WHERE POST_DATE BETWEEN '2019-06-01' AND '2019-08-31'
GROUP BY CASE
WHEN POST_DATE BETWEEN '2019-06-01' AND '2019-06-30' THEN 'June - 2019'
WHEN POST_DATE BETWEEN '2019-07-01' AND '2019-07-31' THEN 'July - 2019'
WHEN POST_DATE BETWEEN '2019-08-01' AND '2019-08-31' THEN 'August - 2019'
ELSE 'Other' END ) as x
ORDER BY month_year desc
Конечный выход