我有這樣的SQL語句和SQL Server是給我下面的錯誤:SQL查詢聚合不應出現在WHERE子句
An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list.
SELECT
SUM(M1.InvoiceTotal)-SUM(M1.AmountApplied) as PastDueAmount
, M1.BillingID
, M2.Name
, M2.DelinquentDaysThreshold
, M2.DelinquentAmountThreshold
, DATEDIFF(d, MIN(BillingDate),GETDATE()) as DaysLate
FROM Invoices M1
LEFT JOIN ClientAccounts M2 ON M1.BillingID = M2.ID
WHERE
InvoiceTotal <> AmountApplied
AND M2.DelinquentDaysThreshold > DATEDIFF(d, MIN(BillingDate),GETDATE())
OR (SUM(M1.InvoiceTotal)-SUM(M1.AmountApplied)) > M2.DelinquentAmountThreshold
GROUP BY
M1.BillingID
, M2.Name
, M2.DelinquentDaysThreshold
, M2.DelinquentAmountThreshold
在where子句中,我只是想拉記錄中,其中最早的未付帳單發票日期大於DelinquentDaysThreshhold(天),或者PastDueAmount(計算的值)大於DelinquentAmountThreshold。
由於某些原因,SQL Server不喜歡彙總金額。
請務必閱讀有關的信譽和投票等方面的常見問題http://meta.stackexchange.com/questions/7237/how-does-reputation-work – gbn
這不僅是SQL的服務器不允許使用'WHERE'子句中的聚合,這是一個通用的SQL事物,這就是爲什麼引入'HAVING'的原因。 – Johan