2016-12-27 21 views
1
SELECT 
    dbo.Customers.FirstName as Firstname, dbo.Customers.LastName as Lastname, 
    dbo.Customers.Phone as Phone, dbo.Guarantors.FirstName as Guarantor Firstname, 
    dbo.Guarantors.LastName as Guarantor Lastname, 
    dbo.Guarantors.Phone as Guarantor Phone, 
    SUM(dbo.PaymentHistory.PaymentAmount) - SUM(dbo.PaymentHistory.PayedAmount) as Debt 
FROM  
    dbo.Credits 
INNER JOIN 
    dbo.PaymentHistory ON dbo.Credits.ID = dbo.PaymentHistory.CreditID 
INNER JOIN 
    dbo.Customers ON dbo.Credits.CustomerID = dbo.Customers.ID 
LEFT OUTER JOIN 
    dbo.CreditGuarantors ON dbo.Credits.ID = dbo.CreditGuarantors.CreditID 
LEFT OUTER JOIN 
    dbo.Guarantors ON dbo.CreditGuarantors.GuarantorID = dbo.Guarantors.ID 
WHERE 
    (dbo.Credits.Status = 0) AND 
    (dbo.PaymentHistory.PaymentDay <= GETDATE()) AND 
    (dbo.Credits.BranchID = 1) 
GROUP BY 
    dbo.Customers.LastName, dbo.Customers.Phone, 
    dbo.Credits.ID, dbo.Customers.FirstName, 
    dbo.Guarantors.FirstName, dbo.Guarantors.LastName, 
    dbo.Guarantors.Phone 

だから、もう1つルール、where Debt !=0を追加したいと思います。しかし、私はエラーを持って、あなたが私を助けることができますか?私はあなたがHAVING句を使用する場合は、0ではない借金、これは集計関数を含むので、債務カスタム列に基づいて選択する方法

+0

、それは彼らがSELECTリストに表示されるのと同じ順序でGROUP BY列を一覧表示するには良いプログラミングの練習です – Mansoor

+1

示してどのようなエラー。 – jarlh

+0

おかげさまでありがとう、何か違いがあるのか​​、ちょうど倫理的なのか教えていただけますか? – Noah

答えて

3

HAVING節を使用してください。クエリの最後にこれを追加します。

HAVING SUM(dbo.PaymentHistory.PaymentAmount) - SUM(dbo.PaymentHistory.PayedAmount) <> 0 
+0

本当に「HAVING」が何をしているのか教えていただけますか? – Noah

2

を持っている人の名前を取得したい:

HAVING SUM(dbo.PaymentHistory.PaymentAmount) - SUM(dbo.PaymentHistory.PayedAmount) <> 0 

または:

HAVING SUM(dbo.PaymentHistory.PaymentAmount) <> - SUM(dbo.PaymentHistory.PayedAmount) 

注:テーブルエイリアスを使用した場合、クエリの書き込みと読み込みが簡単になります。

+0

メモと助けのための手紙 – Noah

関連する問題