Problem Statement:
In SQL, a running total is the cumulative sum of the previous numbers in a column.
Code Snippet:
-- Create a view that sums sales per city per year
USE InternetSales
GO
CREATE VIEW CitySalesByYear
AS
SELECT c.City, YEAR(h.OrderDate) OrderYear, SUM(d.OrderQuantity) OrderQuantity
FROM SalesOrderHeader h
JOIN SalesOrderDetail d ON d.SalesOrderNumber = h.SalesOrderNumber
JOIN Customers c ON h.CustomerKey = c.CustomerKey
GROUP BY c.City, YEAR(h.OrderDate)
GO
-- View the data in the view
SELECT * FROM CitySalesByYear
ORDER BY City, OrderYear
GO
-- Use OVER to show a running total by year
SELECT City, OrderYear, OrderQuantity,
SUM(OrderQuantity) OVER (PARTITION BY City ORDER BY OrderYear
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS RunningQty
FROM CitySalesByYear