即使我没有使用任何问题,SQL查询也会产生聚合函数错误

时间:2013-04-25 18:08:42

标签: sql sql-server-2008

很抱歉下面粘贴了整个BIG查询。我已经一遍又一遍地去了,并检查了可能存在计算错误的地方,比如除以零,但都没有效果。现在它要求我使用group by子句,就像我们在select语句中有计数时得到的错误,并且不使用group by子句。但是当我在查询结尾处放置一个group by子句并列出所有列时,它告诉我列名称不存在!

1 个答案:

答案 0 :(得分:4)

您在SQL的第45行使用了总和:

(case ((sum(T.act_work_qty)+sum(T.remain_work_qty))*100.0)
        when 0 then 0
        when null then 0
        else round((sum(T.act_work_qty)/(sum(T.act_work_qty)+sum(T.remain_work_qty))*100.0),2)
    end)

因此,SQL假定您有一个聚合查询并返回聚合错误。

以下是解决方法的一些想法。 。

  1. 也许您不需要总和,因此您只需使用列值。
  2. 您可以使用Windows函数计算总和。 。 。 sum(T.act_work_qt) over ()将计算查询处理的所有行的总和(应用where子句条件)。
  3. 使用子查询计算总和。