Это проще с нормализованным набором данных:
WITH Counts AS(
SELECT ReviewType,
MONTH(dateCompleted) AS MonthNo,
DATENAME(MONTH,dateCompleted) AS MonthName,
COUNT(1) AS Total
FROM dbo.qryPeakReviews
GROUP BY ReviewType,
MONTH(dateCompleted))
SELECT ReviewType,
MonthName,
SUM(Total) OVER (ORDER BY MonthNo ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS RunningTotal
FROM Counts
ORDER BY MonthNo;
Если вы должны иметь ненормализованный набор данных, вам просто нужно немного изменить кросс-таблицу:
SELECT ReviewType,
COUNT(CASE WHEN MONTH(dateCompleted) <= 1 THEN ReviewType END) AS Jan,
COUNT(CASE WHEN MONTH(dateCompleted) <= 2 THEN ReviewType END) AS Feb,
COUNT(CASE WHEN MONTH(dateCompleted) <= 3 THEN ReviewType END) AS Mar,
COUNT(CASE WHEN MONTH(dateCompleted) <= 4 THEN ReviewType END) AS Apr,
COUNT(CASE WHEN MONTH(dateCompleted) <= 5 THEN ReviewType END) AS May,
COUNT(CASE WHEN MONTH(dateCompleted) <= 6 THEN ReviewType END) AS Jun,
COUNT(CASE WHEN MONTH(dateCompleted) <= 7 THEN ReviewType END) AS Jul,
COUNT(CASE WHEN MONTH(dateCompleted) <= 8 THEN ReviewType END) AS Aug,
COUNT(CASE WHEN MONTH(dateCompleted) <= 9 THEN ReviewType END) AS Sep,
COUNT(CASE WHEN MONTH(dateCompleted) <= 10 THEN ReviewType END) AS Oct,
COUNT(CASE WHEN MONTH(dateCompleted) <= 11 THEN ReviewType END) AS Nov,
COUNT(CASE WHEN MONTH(dateCompleted) <= 12 THEN ReviewType END) AS Dec,
COUNT(ReviewType) AS Result
FROM dbo.qryPeakReviews
GROUP BY ReviewType;