您好,我需要解决一些问题(对我来说)。我有2个SQL
表 - Payments
和Clients
。
在表格Clients
中,我的列数很少,但最重要的是totalPaid
和clientID
。
在Payments
列中有clientID
和amountPaid
列,问题是clintID
中有一个Payments
可能有很多记录。
现在我需要找出每个SUM(amountPaid)FROM Payments是否是Clients(totalPaid)中的值相等。
我很抱歉在没有提供代码的情况下发帖提问但是有人可以帮助我吗?
感谢您的时间。
答案 0 :(得分:5)
要查找匹配的结果:
SELECT *
FROM dbo.Clients C
INNER JOIN (SELECT ClientID, SUM(amountPaid) AmountPaid
FROM Payments
GROUP BY ClientID) P
ON C.ClientID = P.ClientID
WHERE C.TotalPaid = P.AmountPaid
要查找不匹配的结果:
SELECT *
FROM dbo.Clients C
LEFT JOIN ( SELECT ClientID, SUM(amountPaid) AmountPaid
FROM Payments
GROUP BY ClientID) P
ON C.ClientID = P.ClientID
WHERE C.TotalPaid <> ISNULL(P.AmountPaid,0)
答案 1 :(得分:1)
这可以让你得到想要的东西
select clientId
, case when totalPaid = isnull(TotalAmount, 0) then 'yes' else 'no' AreEqual
from Clients left join
(select clientid id, sum(amountPaid) TotalAmount
from payments
group by clientid) temp on clientid = id
这可以防止问题再次发生。
alter table clients
drop column totalPaid