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