Ho questa istruzione SQL e SQL Server mi sta dando il seguente errore:SQL query di aggregazione potrebbe non apparire nella clausola 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
nella clausola WHERE, voglio solo tirare record in cui il la data di fattura di fatturazione non pagata più vecchia è maggiore del valore DelinquentDaysThreshhold (in giorni), oppure il valore PastDueAmount (un valore calcolato) è maggiore di DelinquentAmountThreshold.
Per qualche motivo a SQL Server non piacciono gli importi aggregati.
Ricordati di leggere le FAQ sulla reputazione e il voto ecc http://meta.stackexchange.com/questions/7237/how-does-reputation-work – gbn
Non solo SQL-server che esclude dal finanziamento usando gli aggregati nella clausola 'WHERE', questa è una cosa SQL generale, ecco perché è stato introdotto' HAVING'. – Johan