Я пытаюсь рассчитать промежуточные итоги за период времени, в котором каждый период времени сворачивается в следующий период для совокупного итога.
В реальных данных будет несколько событий наряду с несколькими типами событий итипы стоимости - но в приведенном ниже примере я показываю только одно событие и один тип.Если я смогу заставить это работать, я могу заставить его работать и для других типов.
На снимке экрана ниже показан мой ожидаемый результат:
Я хотел бы суммировать суммы для номера каждого месяца для обоих типов резервов: Расходы и возмещение - таким образом, на 1-й месяц будет в общей сложности 31,7 тыс. Долларов.Месяц 2 имеет в общей сложности около 4,1 тыс. Долларов США, так что это будет добавлено к сумме предыдущих месяцев, что даст мне 35,9 тыс. Долларов.И эта промежуточная сумма должна продолжаться до последней записи.
Я пытаюсь различными способами суммировать с помощью оконной функции, но пока не могу получить ожидаемый результат.Любые предложения о том, как этого достичь?
Пример данных приведен ниже:
CREATE TABLE #temptable
( Catastrophe VARCHAR (60), Type VARCHAR (256), CostType VARCHAR (256), FirstLossDate DATE, MonthNumber INT, Amount DECIMAL (38, 6) );
INSERT INTO #temptable
( Catastrophe, Type, CostType, FirstLossDate, MonthNumber, Amount)
VALUES
('Hurricane Humberto', 'Reserve', 'Expense - A&O', N'2007-09-13', 1, 13460.320000),
('Hurricane Humberto', 'Reserve', 'Indemnity', N'2007-09-13', 1, 18314.610000),
('Hurricane Humberto', 'Reserve', 'Expense - A&O', N'2007-09-13', 2, -1589.340000),
('Hurricane Humberto', 'Reserve', 'Indemnity', N'2007-09-13', 2, 5750.000000),
('Hurricane Humberto', 'Reserve', 'Expense - A&O', N'2007-09-13', 3, -2981.250000),
('Hurricane Humberto', 'Reserve', 'Indemnity', N'2007-09-13', 3, -10000.000000),
('Hurricane Humberto', 'Reserve', 'Expense - A&O', N'2007-09-13', 4, 0.000000),
('Hurricane Humberto', 'Reserve', 'Indemnity', N'2007-09-13', 4, 0.000000),
('Hurricane Humberto', 'Reserve', 'Expense - A&O', N'2007-09-13', 5, 0.000000),
('Hurricane Humberto', 'Reserve', 'Indemnity', N'2007-09-13', 5, 0.000000);
SELECT Catastrophe,
Type,
CostType,
FirstLossDate,
MonthNumber,
Amount,
SUM ( Amount ) OVER (PARTITION BY Catastrophe, MonthNumber, Type ORDER BY MonthNumber ROWS UNBOUNDED PRECEDING ) AS RunningTotals,
SUM ( Amount ) OVER (PARTITION BY Catastrophe, Type, MonthNumber) AS RunningTotal2
FROM #temptable
ORDER BY Catastrophe,
Type,
MonthNumber;
DROP TABLE #temptable;