我需要一些帮助来创建以下结果的查询:
我目前有两个表帐户,其中列出了用户及其初始欠款和付款金额,其中包含用户付款的所有记录。我知道如何将表与JOIN合并,但我不知道如何进行所需数学以获得欠款和付款金额。
帐户中的列包括:ID,名称,帐户,借款
付款中的列包括:ID,AcctID,PaymentAmt
我需要一个查询,它将结合这两个表并进行数学运算,以显示用户当前支付的金额以及用户从初始借入金额中欠多少。
示例表数据:
ID = 3,姓名= Joe,帐户=商业,借款= 100.00
ID = 1,AcctID = 3,PaymentAmt = 10.00
ID = 2,AcctID = 3,PaymentAmt = 10.00
我在C#中使用MS SQL。
答案 0 :(得分:3)
您只需要加入,然后使用SUM和GROUP BY。
SELECT a.Name ,
a.Account ,
a.Borrowed - COALESCE(SUM(p.PaymentAmt),0) as [Still Owes],
COALESCE(SUM(p.PaymentAmt),0) as Paid,
a.Borrowed
FROM
ACCOUNTS a
LEFT JOIN PAYMENTS p
ON a.ID = p.AcctID
GROUP BY
a.Name ,
a.Account ,
a.Borrowed
请注意,在没有付款的情况下,我进行了LEFT JOIN。这也需要使用COALESCE将Null SUM转换为0
答案 1 :(得分:2)
这应该做:
SELECT A.[Name],
A.Account,
A.Borrowed - ISNULL(P.Paid,0) [Still Owes],
ISNULL(P.Paid,0) Paid,
A.Borrowed
FROM Accounts A
LEFT JOIN ( SELECT AcctID,
SUM(PaymentAmt) Paid
FROM Payments
GROUP BY AcctID) P
ON A.ID = P.AcctID
答案 2 :(得分:0)
select a.Name
, a.Account
, a.Borrowed - coalesce(sum(p.PaymentAmt),0) as [Still Owes]
, coalesce(sum(p.PaymentAmt),0) as Paid
, a.Borrowed
from Accounts a
left join
Payments p
on p.AcctID = a.ID
group by
a.Name
, a.Account
, a.Borrowed