Hi Kinyanjui,
You can run the query twice, in a matter of speaking. You can try something like this:
DECLARE @FROMDATE DATETIME = CAST('20150101' AS DATETIME)
DECLARE @TODATE DATETIME = CAST('20151231' AS DATETIME)
SELECT * FROM (
/* Once for the opening balance */
/* Fixed Assets 1 */
SELECT 'Balance' AS 'SAP Code', '' AS 'Description', SUM(T1.Debit - T1.Credit) AS 'Amount-USD',
'' AS FatherNum, 1 AS 'Group', 'Assets' [Assets]
FROM OACT T0
LEFT JOIN JDT1 T1 ON T0.[AcctCode] = T1.[Account]
WHERE T0.AcctCode LIKE '111%' AND T0.Levels = 5
AND (T1.RefDate < @FROMDATE)
UNION ALL
/* Prepaid Expenses and Advance Income Tax 2 */
SELECT 'Balance' AS 'SAP Code', '' AS 'Description', SUM(T1.Debit - T1.Credit) AS 'Amount-USD',
'' AS FatherNum, 1 AS 'Group', 'Assets' [Assets]
FROM OACT T0
LEFT JOIN JDT1 T1 ON T0.[AcctCode] = T1.[Account]
WHERE T0.AcctCode LIKE '114%' AND T0.Levels = 5
AND (T1.RefDate < @FROMDATE)) x
/* and then your original query */
UNION ALL
/* Fixed Assets 1 */
SELECT T0.AcctCode AS 'SAP Code', T0.AcctName AS 'Description', SUM(T1.Debit - T1.Credit) AS 'Amount-USD',
T0.FatherNum, 1 AS 'Group', 'Assets' [Assets]
FROM OACT T0
LEFT JOIN JDT1 T1 ON T0.[AcctCode] = T1.[Account]
WHERE T0.AcctCode LIKE '111%' AND T0.Levels = 5
AND (T1.RefDate BETWEEN @FROMDATE AND @TODATE)
GROUP BY T0.AcctCode, T0.AcctName, T0.FatherNum
UNION ALL
/* Prepaid Expenses and Advance Income Tax 2 */
SELECT T0.AcctCode AS 'SAP Code', T0.AcctName AS 'Description', SUM(T1.Debit - T1.Credit) AS 'Amount-USD',
T0.FatherNum, 2 AS 'Group', 'Assets' [Assets]
FROM OACT T0
LEFT JOIN JDT1 T1 ON T0.[AcctCode] = T1.[Account]
WHERE T0.AcctCode LIKE '114%' AND T0.Levels = 5
AND (T1.RefDate BETWEEN @FROMDATE AND @TODATE)
GROUP BY T0.AcctCode, T0.AcctName, T0.FatherNum
Regards,
Johan