Let's say that I have two tables:
First table: Accounts table
Accountname | accountCode |
---|---|
Client1 | 11 |
Client2 | 111 |
Client3 | 112 |
Second Table: Account Details
AccountCode | Debit | Credit |
---|---|---|
11 | 500 | 0 |
11 | 0 | 200 |
111 | 700 | 0 |
112 | 300 | 0 |
112 | 0 | 400 |
I need to make a query that results the next table :
AccountName | TotalDebit | TotalCredit | CumulativeBalance |
---|---|---|---|
Client1 | 500 | 200 | 300 |
Client2 | 700 | 0 | 1000 |
Client3 | 300 | 400 | 900 |
I have tried this, but it shows only the AccountCode:
select
sum(Debit) as TotalDebit,
sum(Credit) as TotalCredit,
Account_Code as AC
from AccountDetails as A
inner join Accounts as B ON A.AccountCode = B.AccountCode
where AccountCode like N'11%'
group by A.AccountCode
CodePudding user response:
select accountname
,sum(debit) as total_debit
,sum(credit) as total_credit
,sum(coalesce(sum(debit),0)-coalesce(sum(credit),0)) over(order by accountname) as cumulative_balance
from accounts a join account_details ad on ad.accountcode = a.accountcode
group by accountname
accountname | total_debit | total_credit | cumulative_balance |
---|---|---|---|
client1 | 500 | 200 | 300 |
client2 | 700 | null | 1000 |
client3 | 300 | 400 | 900 |