MS-Access - вы пытались выполнить запрос, который не включает указанную агрегированную функцию
SELECT SUM(orders.quantity) AS num, fName, surname
FROM author
INNER JOIN book ON author.aID = book.authorID;
Я продолжаю получать сообщение об ошибке: "вы пытались выполнить запрос, который не включает указанное выражение" fName "как часть агрегатной функции. Что мне делать?
Ответы
Ответ 1
Ошибка в том, что 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()
выполнить одно из своих полей.
Если у вас есть доступ, создайте запрос в конструкторе запросов. Это может помочь вам понять, какие функции возможны, и применить правильный синтаксис SQL Access.
Ответ 2
У меня была аналогичная проблема в запросе MS-Access, и я решил ее, изменив эквивалентный fName
на "выражение" (в отличие от "Group By" или "Sum" ). Пока все мои поля были "Expression", построитель запросов Access не требовал в конце предложения Group By
. ![enter image description here]()
Ответ 3
GROUP BY может быть выбрана из общей строки в представлении дизайна запроса в MS Access.
Если общая строка не показана в дизайне (как в моем случае). Вы можете перейти в SQL View и добавить GROUP By fname и т.д. Затем общая строка будет автоматически отображаться в режиме просмотра.
Выбирать как выражение в этой строке для вычисленных полей.