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

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

4

3 回答 3

32

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

您可以通过包含fNameGROUP 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()其中的一个字段。

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

于 2013-10-17T15:32:58.910 回答
4

我在 MS-Access 查询中遇到了类似的问题,我通过将等效项更改fName为“表达式”(而不是“分组依据”或“总和”)来解决它。只要我的所有字段都是“表达式”,Access 查询生成器最后不需要任何Group By子句。在此处输入图像描述

于 2014-03-28T21:07:45.330 回答
0

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

于 2017-09-06T11:00:39.083 回答