John, I think SQL Server 2008 has Cross Apply 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 IN (2013,2014) ) p1 LEFT OUTER JOIN GL10111 g ON p1.YEAR1 = g.YEAR1 AND p1.PERIODID = g.PERIODID AND p1.ACTINDX = g.ACTINDX ) select g.ACTNUMST ,a.YEAR1 ,a.PERIODID ,a.debitamnt AS [Debit Amt] ,a.crdtamnt AS [Credit Amt] ,a.netchange ,[Balance to Date] = b.NetChange FROM allbalances a inner JOIN GL00105 g on a.ACTINDX = g.ACTINDX CROSS APPLY (SELECT SUM(netchange) AS NetChange FROM allbalances b WHERE a.ACTINDX=b.ACTINDX AND b.PeriodDt <= a.PERIODDT) b ORDER BY g.ACTNUMST,a.YEAR1,a.PERIODID
↧