2013-11-25 35 views
0

您好,我需要解決一些複雜的問題(對我來說)。我有2 SQL表 - PaymentsClients總計記錄在一張表中並檢查是否等於第二個

在表Clients我有幾列,但最重要的是totalPaidclientID

Payments有列名爲clientIDamountPaid的問題是,可能有很多記錄在Payments一個clintID

現在我需要找出是否爲每個SUM(amountPaid)FROM Payments是客戶端(totalPaid)中的值是否相等。

我很抱歉沒有提供代碼提供的問題,但可能有人如此善意幫助我?

謝謝你的時間。

回答

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

這應該得到你想要什麼

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 
相關問題