У меня возникли некоторые проблемы получения запроса работать в MS Access 2007. Я следующий запрос, который работает отлично:Проблемы, связанные с запросом, используя Having пункт в Access
SELECT boq.PIPE_AG,
boq.PIPE_UG,
boq.Pipe,
boq.Unit,
SUM(boq.Quantity) AS SumOfQuantity
FROM [Total - BOQ] boq
GROUP BY boq.PIPE_AG, boq.PIPE_UG, boq.Pipe, boq.Unit
HAVING boq.PIPE_AG In (-1,1) OR boq.PIPE_UG In (-1,1);
Когда я добавляю boq.Pipe = '1' к HAVING
caluse, как это:
HAVING boq.Pipe ='1' AND (boq.PIPE_AG In (-1,1) OR boq.PIPE_UG In (-1,1))
я получаю ошибку, которая говорит:
Вы попытались выполнить запрос, который не включает указанное выражение 'boq.Pipe =' 1 'And (boq.PIPE_AG In (-1,1) Или boq.PIPE_UG In (-1,1))' как часть совокупная функция.
Я немного недоумеваю, почему он жалуется. У меня есть все три записи в предложении GROUP BY
моего запроса. Запрос работает нормально, если я его изменил, чтобы использовать предложение WHERE
, но я пытаюсь понять, почему он жалуется, когда я добавляю поле Pipe в пункт HAVING
.
Используйте предложение WHERE вместо HAVING. Вы должны использовать HAVING только с агрегатными функциями. Например, вы можете использовать HAVING Sum (boq.Quantity)> 1000, который должен это сделать. – THEn
@THEn: Должен быть ответ - я бы поднял, если вы разместите его как один –
Я знаю, что он будет работать, используя где, я просто пытаюсь понять, почему добавление pipe = 1 заставляет его терпеть неудачу. Pipe_ag и pipe_ug также не являются агрегатными функциями. – xecaps12