• Hi There:

    Actually, thanks to someone named "RogerRogerATX" on the Microsoft Dynamics Community message board, I was able to get this figured out thanks to the following code that he and I worked on for SQL 2008:

    WITH allbalances AS (

    SELECT ISNULL(g.ACTINDX,p1.ACTINDX) AS ACTINDX

    ,p1.YEAR1

    ,p1.PERIODID

    ,ISNULL(g.DEBITAMT,0) AS debitamnt

    ,ISNULL(g.CRDTAMNT,0) AS crdtamnt

    ,ISNULL(g.PERDBLNC,0) AS netchange

    ,p1.PERIODDT

    FROM (SELECT g.ACTINDX

    ,p.PERIODID

    ,p.YEAR1

    ,p.PERIODDT

    FROM SY40100 p

    CROSS JOIN GL00100 g

    WHERE p.SERIES = 0

    AND p.YEAR1 > 2010

    ) p1

    LEFT OUTER JOIN GL10111 g ON p1.YEAR1 = g.YEAR1

    AND p1.PERIODID = g.PERIODID

    AND p1.ACTINDX = g.ACTINDX

    )

    select

    g.ACTNUMST AS [Account Number]

    ,d.ACTDESCR as [Account Description]

    ,a.YEAR1 As Year

    ,a.PERIODID as Period

    ,b.NetChange - a.netchange as [Opening Balance]

    ,a.debitamnt AS [Debit]

    ,a.crdtamnt AS [Credit]

    ,a.netchange as [Net Change]

    ,b.NetChange as [Ending Balance]

    FROM allbalances a

    inner JOIN GL00105 g on a.ACTINDX = g.ACTINDX

    inner JOIN GL00100 d on a.ACTINDX = d.ACTINDX

    CROSS APPLY (SELECT SUM(netchange) AS NetChange

    FROM allbalances b WHERE a.ACTINDX=b.ACTINDX AND b.PERIODDT <= a.PERIODDT

    and a.YEAR1=b.YEAR1) b

    ORDER BY g.ACTNUMST,a.YEAR1,a.PERIODID

    Thanks!

    John