1

我有一个客户表和一个付款表,它们在客户 ID (CID) 上连接。在 Payment 表中有一个 Amount 列;有些行的金额为正数(他们欠钱),但其他行的金额为负数(他们付了钱)。

我想知道哪些客户,当我将他们的正数和负数相加时,仍然欠我钱。

如果我只是想查看他们的余额,我可以这样做:

SELECT Customer.FirstName, Customer.LastName, Customer.AccountNumber, SUM(Amount) As Balance
FROM Customer
 JOIN Payment
   ON Customer.CID = Payment.CID
GROUP BY Customer.AccountNumber

如何更改此设置,以便如果余额为 0 或更少,我不会为该客户返回一行?

编辑: HAVING是我不知道的关键字。感谢您的许多正确答案!

4

4 回答 4

2
SELECT Customer.FirstName, Customer.LastName, Customer.AccountNumber, SUM(Amount) As Balance
FROM Customer
 JOIN Payment
   ON Customer.CID = Payment.CID
GROUP BY Customer.AccountNumber
HAVING Balance>0
于 2013-08-20T23:52:31.127 回答
2

HAVING 关键字允许您根据功能分组进行选择:

SELECT Customer.FirstName, Customer.LastName, Customer.AccountNumber, SUM(Amount) As Balance
FROM Customer
JOIN Payment
ON Customer.CID = Payment.CID
GROUP BY Customer.AccountNumber
HAVING SUM(Amount) > 0
于 2013-08-20T23:53:28.973 回答
1
SELECT c.FirstName, c.LastName, c.AccountNumber, p.Amount AS Balance
FROM Customer c 
JOIN Payment p
ON c.CID = p.CID
GROUP BY c.AccountNumber
HAVING SUM(p.Amount) > 0
于 2013-08-21T00:01:49.070 回答
0
select customers.name, sum(payments.amount) balance  
from customers join payments on customers.id = payments.cid
group by customers.id having balance > 0
于 2013-08-20T23:54:52.967 回答