Hi All.
I wish to list day by day opening and closing balances of G/L account by restricting the result to a time interval.
Anyone know how to write the query for G/L account opening & closing balances by day?
I found this in the forum and modify it to below:
declare @fr char(10)
declare @to char(10)
set @fr=convert (char(10),[%0],20)
set @to=convert (char(10),[%1],20)
declare @PrCl dec(19,6)
declare @de dec(19,6)
declare @cr dec(19,6)
declare @acc char(20)
declare @Pracc char(20)
Create table #W
(M char(10), Acc char(20), Me char(100), Tid char(10), Br char(10), TT char(30), Op dec(19,6),De dec(19,6),Cr dec(19,6),Cl dec(19,6) )
Insert into #W (M,Acc,Me,Tid,Br,TT,Op,De,Cr,Cl)
SELECT convert (char(10),T1.[RefDate],20)Mo, T1.[Account],T0.Memo, T0.TransId, T0.BaseRef, CASE
WHEN T0.TransType = 13 THEN 'AR Inv'
WHEN T0.TransType = 14 THEN 'AR CN'
WHEN T0.TransType = 18 THEN 'AP Inv'
WHEN T0.TransType = 19 THEN 'AP CN'
WHEN T0.TransType = 24 THEN 'Incoming Payment'
WHEN T0.TransType = 30 THEN 'JE'
WHEN T0.TransType = 46 THEN 'Outgoing Payment'
ELSE 'Other'
END AS 'Trans Type',
0,T1.[Debit] De , T1.[Credit] Cr,0
FROM OJDT T0 INNER JOIN JDT1 T1 ON T0.TransId = T1.TransId
Group by T1.[Account],convert (char(10),T1.[RefDate],20),T0.Memo, T0.TransId, T0.BaseRef, T0.TransType, T1.Debit, T1.Credit
Order By T1.[Account],convert (char(10),T1.[RefDate],20)
Declare cu cursor for
Select acc,de,cr from #W
for update
set @PrAcc=''
Open cu
Fetch next from cu into @acc,@de,@cr
While @@FETCH_STATUS = 0
Begin
If @acc!=@PrAcc set @PrCl=0
Update #W
set op=@PrCl,
cl=@PrCl-@Cr+@de
where current of cu
set @PrCl=@PrCl-@Cr+@de
set @PrAcc=@acc
Fetch next from cu into @acc,@de,@cr
End
deallocate cu
Select * from #w
Where M between @fr and @to
Drop table #W
but some of the rows are missing from the result. e.g. row with the same value of debit/credit ( same TransId and BaseRef) will come out once only in the result.
Please guide me on the above issue.
Thanks & Best Regards,
Leng