Ash*_*ngh 0 sql t-sql sql-server
我有三张桌子:
顾客
customer_id first_name
1 kapil
2 rajesh
Run Code Online (Sandbox Code Playgroud)
帐户
Customer_id Account_id
1 S1
2 s2
Run Code Online (Sandbox Code Playgroud)
收据
Recipt_id customer_id Account_id Transaction_type Amount
R1 1 s1 Deposit 40000
R2 2 s2 Deposit 300
R3 1 s1 withdrawal 2000
Run Code Online (Sandbox Code Playgroud)
现在我把查询如下
select
c.customer_id,c.first_name,s.current_balance,s.account_id,
(select sum(amount)
from receipt as r ,
saving_account as s
where r.transaction_type='deposit'
and r.account_no = s.account_id
) as debit,
(select sum(amount)
from receipt as r ,
saving_account as s
where r.transaction_type='withdrawl'
and r.account_no = s.account_id
)as credit
from customer as c
left outer join saving_account as s
inner join receipt as r on r.customer_id = s.customer_id
on s.customer_id = c.customer_id
group by c.customer_id
Run Code Online (Sandbox Code Playgroud)
但是它给了我一笔整个行的借记和信用太多我不明白为什么它显示那样....
我想要的结果是:
customer_id customer_name account_id debit credit balance
1 kapil s1 40000 2000 200
2 rajesh s2 300 null 500
Run Code Online (Sandbox Code Playgroud)
SELECT customer_ID, first_name, Account_ID,
Deposit, Withdrawal,
(Deposit - Withdrawal) balance
FROM
(
SELECT a.customer_ID,
a.first_name,
b.Account_ID,
SUM (CASE WHEN c.transaction_type = 'Deposit' THEN c.Amount ELSE 0 END) Deposit,
SUM (CASE WHEN c.transaction_type = 'withdrawal' THEN c.Amount ELSE 0 END) Withdrawal
FROM customer a
INNER JOIN Account b
ON a.customer_ID = b.customer_ID
LEFT JOIN Receipt c
ON b.customer_ID = c.customer_ID AND
b.account_ID = c.Account_ID
GROUP BY a.customer_ID, a.first_name, b.Account_ID
) bb
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1046 次 |
| 最近记录: |