将记录汇总到一个表中并检查是否等于秒

时间:2013-11-25 17:21:18

标签: sql sql-server

您好,我需要解决一些问题(对我来说)。我有2个SQL表 - PaymentsClients

在表格Clients中,我的列数很少,但最重要的是totalPaidclientID

Payments列中有clientIDamountPaid列,问题是clintID中有一个Payments可能有很多记录。

现在我需要找出每个SUM(amountPaid)FROM Payments是否是Clients(totalPaid)中的值相等。

我很抱歉在没有提供代码的情况下发帖提问但是有人可以帮助我吗?

感谢您的时间。

2 个答案:

答案 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