SELECT SUM(orders.quantity) AS num, fName, surname
FROM author
INNER JOIN book ON author.aID = book.authorID;
我不断收到错误消息:“您尝试执行的查询不包含指定表达式“fName”作为聚合函数的一部分。我该怎么办?
错误是因为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()
其中的一个字段。
如果您有可用的 Access,请在查询设计器中构建查询。它可以帮助您了解可能的功能并应用正确的 Access SQL 语法。
我在 MS-Access 查询中遇到了类似的问题,我通过将等效项更改fName
为“表达式”(而不是“分组依据”或“总和”)来解决它。只要我的所有字段都是“表达式”,Access 查询生成器最后不需要任何Group By
子句。
GROUP BY 可以从 MS Access 中查询设计视图的 Total 行中选择。
如果总行未显示在设计视图中(如我的情况)。您可以转到 SQL View 并添加 GROUP By fname 等。然后 Total 行将自动显示在设计视图中。
对于计算字段,您必须在此行中选择表达式。