Get starting and ending balance, with total credit and debit transactions
I solved the problem using CROSS APPLY. The performance is so much better 
the code is below:

select sp.StudentCode,sp.StudentNameEN,sp.Flag,DST.DTAmount-CST.CTAmount StartBalance,TDTrans.DTran  DreditTransactions,TCTrans.CTran Credittransactions,DET.DTAmount-CET.CTAmount EndBalance,@StartDate StartDate,@EndDate EndDate
from Student_Profile sp  cross apply 
(
    select DTAmount = ISNULL(SUM(TransactionAmount) ,0)    --Charge &amp; Refund
    FROM  dbo.Student_Card_Transaction CT 
    WHERE  ct.IsDeleted=0
    and CONVERT(date, ct.TransactionDate) &lt;  @StartDate
    and ct.CurrencyID=1
    and ct.TransactionTypeID!=2 
    and ct.StudentID=sp.Serial
)as DST cross apply 
(
    select CTAmount = ISNULL(SUM(TransactionAmount) ,0)     --orders
    FROM  dbo.Student_Card_Transaction CT
    WHERE  ct.IsDeleted=0
    and CONVERT(date, ct.TransactionDate) &lt;  @StartDate
    and ct.CurrencyID=1
    and ct.TransactionTypeID=2 
    and ct.StudentID=sp.Serial
)as CST cross apply 
(
    select DTAmount = ISNULL(SUM(TransactionAmount) ,0)     
    FROM  dbo.Student_Card_Transaction CT
    WHERE  ct.IsDeleted=0
    and CONVERT(date, ct.TransactionDate) &lt;  DATEADD("day", 1, @EndDate)
    and ct.CurrencyID=1
    and ct.TransactionTypeID !=2 
    and ct.StudentID=sp.Serial
)as DET cross apply 
(
    select CTAmount = ISNULL(SUM(TransactionAmount) ,0)
    FROM  dbo.Student_Card_Transaction CT
    WHERE  ct.IsDeleted=0
    and CONVERT(date, ct.TransactionDate) &lt;  DATEADD("day", 1, @EndDate)
    and ct.CurrencyID=1
    and ct.TransactionTypeID=2 
    and ct.StudentID=sp.Serial
)as CET  cross apply 
(
select DTran =  ISNULL(SUM(TransactionAmount) ,0)    --charge &amp; Refund
    FROM     dbo.Student_Card_Transaction CT
    WHERE   CT.StudentID=sp.Serial
    and ct.IsDeleted=0   
    and CONVERT(date, ct.TransactionDate) between @StartDate  and DATEADD("day", 1, @EndDate)
    and ct.CurrencyID=1
    and ct.TransactionTypeID!=2
)as TDTrans cross apply 
(
select CTran =  ISNULL(SUM(TransactionAmount) ,0)     --order
    FROM     dbo.Student_Card_Transaction CT
    WHERE   CT.StudentID=sp.Serial
    and ct.IsDeleted=0   
    and CONVERT(date, ct.TransactionDate) between @StartDate  and DATEADD("day", 1, @EndDate)
    and ct.CurrencyID=1
    and ct.TransactionTypeID=2
)as TCTrans 
inner join  Student_Cards SC on sp.Serial=sc.StudentID
where sp.IsDeleted=0
and sc.IsDeleted=0
and sc.IsActive=1
and (sp.Flag=1)