J'ai cette instruction SQL et le serveur SQL me donne l'erreur suivante :
Un agrégat peut ne pas apparaître dans la liste WHERE sous-requête contenue dans une clause HAVING ou une liste de sélection.
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
Dans la clause where, je ne veux extraire que les enregistrements dont la date de la plus ancienne facture impayée est supérieure au seuil DelinquentDaysThreshhold (en jours), OU dont le PastDueAmount (une valeur calculée) est supérieur au seuil DelinquentAmountThreshold (en jours).
Pour une raison quelconque, SQL Server n'aime pas les montants agrégés.