SELECT SUM(orders.quantity) AS num, fName, surname
FROM author
INNER JOIN book ON author.aID = book.authorID;
我不断收到错误消息:“您尝试执行不包含指定表达式”fName“的查询作为聚合函数的一部分。我该怎么办?
答案 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
子句。
答案 2 :(得分:0)
可以从MS Access的查询设计视图中的总行中选择GROUP BY 如果在设计视图中未显示总行(如我的情况)。您可以转到SQL视图并添加GROUP By fname等。然后,Total行将自动显示在设计视图中 您必须在此行中选择“表达式”作为计算字段。