DECLARE @ClosingDate as datetime SELECT @ClosingDate = '2015-12-31' --Declares and lookups: DECLARE @CY datetime SELECT @CY = @ClosingDate DECLARE @PeriodEnd int SELECT @PeriodEnd = (Select Max(idPeriod) + 1 from _etblPeriod where dPeriodDate < @CY) --AR Accounts: Foreign: SELECT DB_NAME() as Company ,'AR' as [Type] ,Account ,Name ,COALESCE(G.Code + ' - ' + G.Description,'None') as GroupCodeDesc ,Currency.CurrencyCode ,HomeClosing = ROUND(COALESCE((SELECT SUM(Debit-Credit) FROM PostAR where AccountLink = Client.DCLink AND TxDate <= @ClosingDate),0),2) ,ForeignClosing = CASE WHEN bForCurAcc = 1 THEN ROUND(COALESCE((SELECT SUM(fForeignDebit-fForeignCredit) FROM PostAR where AccountLink = Client.DCLink AND TxDate <= @ClosingDate),0),2) ELSE 0 END FROM Client LEFT JOIN Currency ON Client.iCurrencyID = Currency.CurrencyLink LEFT JOIN CliClass G ON G.idCliClass = Client.iClassID WHERE Client.bForCurAcc = 1 --AP Accounts Foreign: UNION ALL SELECT DB_NAME() as Company ,'AP' as [Type] ,Account ,Name ,COALESCE(G.Code + ' - ' + G.Description,'None') as GroupCodeDesc ,Currency.CurrencyCode ,HomeClosing = ROUND(COALESCE((SELECT SUM(Debit-Credit) FROM PostAP where AccountLink = Vendor.DCLink AND TxDate <= @ClosingDate),0),2) ,ForeignClosing = CASE WHEN bForCurAcc = 1 THEN ROUND(COALESCE((SELECT SUM(fForeignDebit-fForeignCredit) FROM PostAP where AccountLink = Vendor.DCLink AND TxDate <= @ClosingDate),0),2) ELSE 0 END FROM Vendor LEFT JOIN Currency ON Vendor.iCurrencyID = Currency.CurrencyLink LEFT JOIN VenClass G ON G.idVenClass = Vendor.iClassID WHERE Vendor.bForCurAcc = 1 --GL Accounts Foreign: UNION ALL --Query: SELECT DB_NAME() as Company ,'GL' as [Type] ,Accounts.[Master_Sub_Account] ,Accounts.[Description] ,AT.cAccountTypeDescription as Account_Type ,Currency.CurrencyCode ,HomeClosing = CASE WHEN bIsBalanceSheet = 1 THEN ROUND(COALESCE((SELECT SUM(ROUND(Cast(fBFDebit as Decimal(22,5)),2)-ROUND(Cast(fBFCredit as Decimal(22,5)),2)) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0) + COALESCE((SELECT SUM(BLC.fActualDebit - BLC.fActualCredit) FROM _etblAccBlnc BLC LEFT JOIN _etblPeriod PD ON BLC.iAccBlncPeriodID = PD.idPeriod WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID < @PeriodEnd AND BLC.iAccBlncPeriodID > 0),0) + COALESCE((SELECT SUM(ROUND(Cast(DEBIT as Decimal(22,5)),2)-ROUND(Cast(CREDIT as Decimal(22,5)),2)) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period >= @PeriodEnd AND P2.TxDate <= @CY),0),2) ELSE 0 END ,ForeignClosing = CASE WHEN bIsBalanceSheet = 1 THEN ROUND(COALESCE((SELECT SUM(ROUND(Cast(fBFForeignDebit as Decimal(22,5)),2)-ROUND(Cast(fBFForeignCredit as Decimal(22,5)),2)) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0) + COALESCE((SELECT SUM(BLC.fActualForeignDebit - BLC.fActualForeignCredit) FROM _etblAccBlnc BLC LEFT JOIN _etblPeriod PD ON BLC.iAccBlncPeriodID = PD.idPeriod WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID < @PeriodEnd AND BLC.iAccBlncPeriodID > 0),0) + COALESCE((SELECT SUM(ROUND(Cast(fForeignDebit as Decimal(22,5)),2)-ROUND(Cast(fForeignCredit as Decimal(22,5)),2)) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period >= @PeriodEnd AND P2.TxDate <= @CY),0),2) ELSE 0 END FROM Accounts LEFT JOIN _etblGLAccountTypes AT ON Accounts.iAccountType = AT.idGLAccountType LEFT JOIN Currency ON Accounts.iForeignBankCurrencyID = Currency.CurrencyLink WHERE Accounts.[AccountLevel] <> 1 AND Accounts.bForeignBankAcc = 1 AND AT.bIsBalanceSheet = 1