2016-12-27 2 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. но я получил ошибку, может помочь мне с этим? Я хочу, чтобы получить долг, который не 0, имя человека, который имеет ДОЛГКак выбрать на основе пользовательского столбца

+0

, Что ошибка показывает – Mansoor

+1

Это хорошая практика программирования перечислить GROUP BY столбцы в том же порядке, как они появляются в списке выбора. – jarlh

+0

спасибо за примечание, можно сказать, есть ли какая-то разница или это просто этика ?? – Noah

ответ

3

Используйте пункт HAVING. Добавьте к этому в конце запроса:

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

Спасибо, можно сказать, что делает «ИМЕЕТ»? – Noah

2

Поскольку это включает в себя функции агрегации, вы хотите использовать HAVING пункт:

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

Или:

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

Примечание. Ваш запрос будет проще писать и читать, если вы использовали псевдонимы таблиц.

+0

Спасибо за примечание и за помощь – Noah

Смежные вопросы