Проблемы с запросом с использованием предложения «Наличие» в Access - PullRequest
1 голос
/ 12 июля 2011

У меня возникли проблемы с запуском запроса в MS Access 2007. У меня следующий запрос, который работает нормально:

  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 следующим образом:

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.

Ответы [ 2 ]

5 голосов
/ 12 июля 2011

Используйте предложение WHERE вместо HAVING.Вы должны использовать HAVING только с агрегатными функциями.Например, вы можете использовать

HAVING Sum(boq.Quantity) > 1000 

, который должен это сделать

3 голосов
/ 12 июля 2011

Какую версию MS Access вы используете?Я просто воспроизвел вашу точную таблицу / запрос в моей копии Access 2007, и она работала отлично (как и ожидалось).Я предположил, что все ваши столбцы имеют тип Number (длинный), а столбец Pipe - Text

...