• Now that I've finally gotten this to work, this is how I did it. (I'm using 2012 but compatibility is 2008).

    In all honesty, since I completely forgot how to do subreports (shameful, I know!), I watched the WiseOwl video on it. Well worth the watching, and super easy to follow. It can be found here.

    First you create the outer report, for the Year(s).

    SELECT DISTINCT YEAR(orderdate) AS OrderYear

    FROM Sales.Orders

    ORDER BY OrderYear

    Then you create the subreport... this is the stored procedure I used... won't work unless you're using SQL Server 2008R2 at least.

    CREATE PROC horizRunTotal AS

    SELECT

    orderDate

    ,DATEPART(QUARTER,orderDate) AS Qtr

    ,MONTH(orderDate) AS OrderMonth

    ,YEAR(OrderDate) AS OrderYear

    ,productid

    ,qty

    , SUM(x.qty) OVER (PARTITION BY OrderMonth, ProductID

    ORDER BY OrderYear, OrderMonth, ProductID

    ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as RunTotal

    FROM

    (SELECT

    so.orderDate

    ,DATEPART(QUARTER,so.orderDate) AS Qtr

    ,MONTH(so.orderDate) AS OrderMonth

    ,YEAR(so.OrderDate) AS OrderYear

    ,sod.productid

    ,sod.qty

    FROM Sales.Orders so INNER JOIN Sales.OrderDetails sod

    ON so.OrderID = sod.OrderID) x

    I'm cheating and using a dataset from Itzik Ben-Gan's TSQL 2012 windowing functions book[/url] (only because it's super simple and clear... unlike that AdventureWorks monstrosity).

    If you don't have 2008R2, then you'll likely have to use one of the tricks on http://www.sqlauthority.com, like this one[/url].

    Now that I've explained this backwards, ...

    step 1 is from SQL Authority,

    step 2, build the report/subreport.