SSRS 2012#divide on divide(NOT by zero)

时间:2016-02-16 01:54:15

标签: sql reporting-services sql-server-2012 ssrs-2012

以下代码

SELECT max(operation.setup_hrs),sum(lt2.hours_worked),(sum(lt2.hours_worked)/max(operation.setup_hrs)) ....

返回(在查询设计器中) 0.180 0.46 2.555555

我自然而然地追求的是

max(operation.setup_hrs)/sum(lt2.hours_worked)

使用完全相同的代码,返回#Error

同样如此,因为我试图再次将其视为愚蠢,

1/(sum(lt2.hours_worked)/max(operation.setup_hrs))

如果我手动编写(再次在同一查询中,总是只替换第三列)

(0.180/0.46)

我得到预期的0.391304。显然它可以处理分裂。

仅仅是为了记录,虽然这里的结果显示没有涉及零但仍然出现#Error,但是,我在原始代码中做了(在我开始寻找bug之前)有代码来处理最终的零容错

SELECT iif(sum(lt2.hours_worked)=0,0,
         operation.setup_hrs/iif(sum(lt2.hours_worked)=0,1,sum(lt2.hours_worked)))

我不知所措:可能导致#Error?

的原因

1 个答案:

答案 0 :(得分:1)

你必须将它转换为int / double / float等来进行除法

max(CDbl(Fields!lt2.hours_worked.Value))/sum(CDbl(lt2.hours_worked))