Tôi cố gắng để trả về một danh sách các tài khoản với dư, Kết quả của họ và thu nhậpLàm thế nào để SUM cột trên nhiều điều kiện trong một GROUP BY
Account Transaction
------- -----------
AccountID TransactionID
BankName AccountID
Locale Amount
Status
Dưới đây là những gì tôi đang có. Ai đó có thể giải thích nơi tôi đang đi sai?
select
a.ACCOUNT_ID,
a.BANK_NAME,
a.LOCALE,
a.STATUS,
sum(t1.AMOUNT) as BALANCE,
sum(t2.AMOUNT) as OUTCOME,
sum(t3.AMOUNT) as INCOME
from ACCOUNT a
left join TRANSACTION t1 on t1.ACCOUNT_ID = a.ACCOUNT_ID
left join TRANSACTION t2 on t2.ACCOUNT_ID = a.ACCOUNT_ID and t2.AMOUNT < 0
left join TRANSACTION t3 on t3.ACCOUNT_ID = a.ACCOUNT_ID and t3.AMOUNT > 0
group by a.ACCOUNT_ID, a.BANK_NAME, a.LOCALE, a.[STATUS]
CẬP NHẬT
đã sửa chữa các t2 trái tham gia cú pháp theo bình luận dưới đây.
Kết quả tôi mong đợi là hiển nhiên từ câu hỏi. Đối với 6 tài khoản, SQL sẽ trả về 6 tài khoản với Số dư, Thu nhập và Kết quả của tài khoản đó.
Sự cố với SQL mà tôi cung cấp là các số sai! Theo các ý kiến tôi nghĩ rằng vấn đề bắt nguồn từ việc tham gia nhiều lần mà là tổng hợp số tiền không chính xác.
Không nên tham gia TRANSACTION t2 trên t2 như ở trên t2.ACCOUNT_ID = a.ACCOUNT_ID? {Vui lòng chỉnh sửa câu hỏi. Được quảng bá để nhận xét từ câu trả lời của Neil Moss dưới đây} – SAMills