Running sum

A running (or cumulative) sum calculation can be useful in warranty scenarios.

/* This selects the total sales in the
  * 12 most recent months.
  */
DEFINE Input AS SELECT
   DimDate_CalendarYear AS "Year",
   DimDate_MonthNumberOfYear AS "Month",
   SUM(FactSales_SalesAmount) AS TotalSales GROUP BY "Year", "Month"
ORDER BY "Year" DESC, "Month" DESC
PAGE(0, 12);

RETURN CumulativeSum AS SELECT
   one."Year" AS "Year",
   one."Month" AS "Month",
   SUM(many.TotalSales) AS TotalSales
FROM Input one JOIN Input many
ON ((one."Year" > many."Year") OR
     (one."Year" = many."Year" AND
      one."Month" >= many."Month")
     )
GROUP BY "Year", "Month"
ORDER BY "Year", "Month"