小编Chr*_*ler的帖子

SQL查询聚合可能不会出现在WHERE子句中

我有这个SQL语句,SQL Server给我以下错误:

聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或选择列表中包含的子查询中.

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
Run Code Online (Sandbox Code Playgroud)

在where子句中,我只想拉出最旧的未付帐单发票日期大于DelinquentDaysThreshhold(以天为单位)的记录,或者PastDueAmount(计算值)大于DelinquentAmountThreshold.
出于某种原因,SQL Server不喜欢聚合金额.

sql sql-server sql-server-2005

17
推荐指数
1
解决办法
3万
查看次数

标签 统计

sql ×1

sql-server ×1

sql-server-2005 ×1