我在获取查询以在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
caluse时,如下所示:
HAVING boq.Pipe ='1' AND (boq.PIPE_AG In (-1,1) OR boq.PIPE_UG In (-1,1))
我收到错误消息:
您尝试执行的查询不包含指定的表达式'boq.Pipe ='1'和(boq.PIPE_AG In(-1,1)或boq.PIPE_UG In(-1,1))'as集合函数的一部分。
我为什么抱怨而感到有点困惑。我在查询的GROUP BY
子句中确实有三个文件。如果我将其更改为使用WHERE
子句,则查询可以正常工作,但是当我将管道字段添加到HAVING
子句时,我正在尝试理解为什么它会抱怨。
答案 0 :(得分:5)
使用WHERE子句而不是HAVING。您应该仅将HAVING用于聚合函数。 例如,您可以使用
HAVING Sum(boq.Quantity) > 1000
应该这样做
答案 1 :(得分:3)
您使用的是什么版本的MS Access?我刚刚在我的Access 2007副本中复制了您的确切表/查询,它完全正常(如预期的那样)。我假设你的所有列都是Number类型(长)和Pipe列是Text