0

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

4

1 回答 1

4

您在 SQL 的第 45 行使用 sum:

(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 。. . sum(T.act_work_qt) over ()将计算查询处理的所有行的总和(where应用子句条件)。
  3. 使用子查询来计算总和。
于 2013-04-25T18:11:56.070 回答