访问2013查询错误

时间:2015-04-15 00:54:20

标签: ms-access ms-access-2013

我正在尝试运行我认为是一个非常基本的查询。我只是想根据总计计算收到的付款数量。但是,当我构建表达式并尝试运行查询时,我收到错误消息:

  

您的查询不包含指定的表达式' 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));

1 个答案:

答案 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重写这些相同的函数。