mam to SQL i SQL Server daje mi następujący błąd:kruszywo zapytań SQL nie może pojawić się w klauzuli 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
w klauzuli WHERE, chcę tylko, aby wyciągnąć rekordy, w których najstarsza niezapłacona faktura fakturowania Data jest większa niż wartość DelinquentDaysThreshhold (w dniach), lub wartość PastDueAmount (wartość obliczona) jest większa niż wartość DelinquentAmountThreshold.
Z jakiegoś powodu SQL Server nie lubi zagregowanych kwot.
Pamiętaj, aby zapoznać się z FAQ o reputacji i głosowania itp http://meta.stackexchange.com/questions/7237/how-does-reputation-work – gbn
To nie tylko SQL-serwer, który wykluczy przy użyciu agregatów w klauzuli "WHERE", jest to ogólna kwestia SQL, dlatego wprowadzono 'HAVING'. – Johan