MS-Access - 您尝试执行不包含指定聚合函数的查询

时间:2013-10-17 15:10:13

标签: sql ms-access

SELECT SUM(orders.quantity) AS num, fName, surname
FROM author
INNER JOIN book ON author.aID = book.authorID;

我不断收到错误消息:“您尝试执行不包含指定表达式”fName“的查询作为聚合函数的一部分。我该怎么办?

3 个答案:

答案 0 :(得分:24)

错误是因为fName列表中包含SELECT,但未包含在GROUP BY子句中,并且不属于聚合函数(Count()Min()Max()Sum()等。)

您可以通过在fName中添加GROUP BY来解决该问题。但是,您将面临与surname相同的问题。所以把它们放在GROUP BY

SELECT
    fName,
    surname,
    Count(*) AS num_rows
FROM
    author
    INNER JOIN book
    ON author.aID = book.authorID;
GROUP BY
    fName,
    surname

注意我在Count(*)使用了SUM(orders.quantity)。但是,orders部分中未包含FROM,因此您必须先包含该Sum(),然后才能{{1}}其中一个字段。

如果您有Access可用,请在查询设计器中构建查询。它可以帮助您了解可能的功能并应用正确的Access SQL语法。

答案 1 :(得分:4)

我在MS-Access查询中遇到了类似的问题,我通过将我的等效fName更改为“表达式”(而不是“分组依据”或“总和”)来解决它。只要我的所有字段都是“Expression”,Access查询构建器最后都不需要任何Group By子句。enter image description here

答案 2 :(得分:0)

可以从MS Access的查询设计视图中的总行中选择GROUP BY 如果在设计视图中未显示总行(如我的情况)。您可以转到SQL视图并添加GROUP By fname等。然后,Total行将自动显示在设计视图中 您必须在此行中选择“表达式”作为计算字段。