使用Access中的Having子句进行查询的问题

xec*_*s12 1 sql ms-access ms-access-2007

我在获取查询以在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);
Run Code Online (Sandbox Code Playgroud)

当我将calq.Pipe ='1'添加到HAVINGcaluse时,如下所示:

HAVING boq.Pipe ='1' AND (boq.PIPE_AG In (-1,1) OR boq.PIPE_UG In (-1,1))
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

您尝试执行的查询不包含指定的表达式'boq.Pipe ='1'和(boq.PIPE_AG In(-1,1)或boq.PIPE_UG In(-1,1))'作为集合函数.

我为什么抱怨而有点困惑.我在GROUP BY查询的子句中确实有三个文件.如果我将其更改为使用WHERE子句,查询工作正常,但我试图理解为什么当我将Pipe字段添加到HAVING子句时它会抱怨.

THE*_*HEn 5

使用WHERE子句而不是HAVING.您应该仅将HAVING用于聚合函数.例如,您可以使用

HAVING Sum(boq.Quantity) > 1000 
Run Code Online (Sandbox Code Playgroud)

应该这样做