我正在尝试运行我认为是一个非常基本的查询。我只是想根据总计计算收到的付款数量。但是,当我构建表达式并尝试运行查询时,我收到错误消息:
您的查询不包含指定的表达式' Client_ID'作为集合函数的一部分。
我已经阅读了几个关于此错误的问题,但我无法弄清楚我的查询中缺少的是什么,这导致了同样的错误。这是我的疑问:
SELECT Client.Client_Id, Loan.Loan_Id, ([Loan]![BalanceForward]+Sum([Payment]![Amount]))/[Loan]![PaymentAmount] AS [Payment Number]
FROM (Client LEFT JOIN Loan ON Client.Client_Id = Loan.Client_Id) LEFT JOIN Payment ON Loan.Loan_Id = Payment.Loan_Id
WHERE (((Client.Client_Id)=6));
答案 0 :(得分:0)
简单地说,您错过了GROUP BY条款。在用于汇总记录集的聚合SQL查询中,必须在Sum(), Count(), Avg(), Var(), Min(), Max()
中引用未与GROUP BY
聚合的任何字段。基本上,它意味着您正在对记录进行求和或计数,并按此类字段(此处为客户和贷款ID)进行分组。
SELECT Client.Client_Id, Loan.Loan_Id,
([Loan]![BalanceForward] +
DSum("Amount", "Payment", "Loan_Id=" & Payment.Loan_Id))/
[Loan]![PaymentAmount] AS [Payment Number]
FROM (Client LEFT JOIN Loan ON Client.Client_Id = Loan.Client_Id)
LEFT JOIN Payment ON Loan.Loan_Id = Payment.Loan_Id
WHERE (((Client.Client_Id)=6))
GROUP BY Client.Client_Id, Loan.Loan_Id,
([Loan]![BalanceForward] +
DSum("Amount", "Payment", "Loan_Id=" & Payment.Loan_Id))/
[Loan]![PaymentAmount];
但是,您无法将级别字段(即Loan!BalanceForward,Loan!PaymentAmount)与聚合字段(即Payment!Amount)组合在同一表达式中。因此,您必须使用Domain Aggregates(DSum,DLookUp,DAvg,DCount等)。或者,可以使用subqueries重写这些相同的函数。