Я разрабатываю запрос Oracle SQL, который находит кумулятивную сумму числового поля, сгруппированного по двум измерениям поля.
Я использую таблицу SALES из схемы Oracle Sales History в качестве ссылки.
Фактический запрос выглядит следующим образом:
Select DISTINCT CHANNEL_ID, PROD_ID, TIME_ID, SUM (AMOUNT_SOLD) OVER (PARTITION BY CHANNEL_ID, PROD_ID ORDER BY TIME_ID) AS "Cumulative Sum"
From SH.SALES
Order By CHANNEL_ID ASC, PROD_ID ASC, TIME_ID ASC;
Результат запроса:
CHANNEL_ID PROD_ID TIME_ID Cumulative Sum
---------- ------- ------ --------------
2 13 10-JAN-98 1205.99
2 13 16-JAN-98 2335.03
2 13 11-FEB-98 4089.16
...
Результат этого запроса оказывается нормальным, но в нем отсутствует одна вещь.
Это не показывает совокупную сумму для дат, когда не было никаких транзакций продаж.
Что мне нужно, это следующий результат:
CHANNEL_ID PROD_ID TIME_ID Cumulative Sum
---------- ------- ------ --------------
2 13 10-JAN-98 1205.99
2 13 11-JAN-98 1205.99
2 13 12-JAN-98 1205.99
2 13 13-JAN-98 1205.99
...
...
2 13 16-JAN-98 2335.03
2 13 17-JAN-98 2335.03
2 13 18-JAN-98 2335.03
...
...
2 13 11-FEB-98 4089.16
2 13 12-FEB-98 4089.16
...
...