我在半小时级的思科UCCE数据SSRS报告中有几列。
管理层希望在几分钟内看到报告中的值(数据以秒为单位),他们只希望平均值包含呼叫数量大于零的值(通话时的平均时间没有意义)在没有任何需要时间的呼叫时包括零值)。他们也不希望在尝试除以零的单元格中看到#Error,或者尝试针对空字符串尝试DateAdd。
我有这种可怕的表达,应该这样做,但它不起作用。
=iff(Floor(iif(count(iif(Fields!CallsHandled.Value=0, nothing
,1))=0,"",sum(Fields!AHT.Value)/sum(iif(Fields!CallsHandled.Value=0, nothing
,Fields!CallsHandled.Value))) /
60)="","",Floor(iif(count(iif(Fields!CallsHandled.Value=0, nothing
,1))=0,"",sum(Fields!AHT.Value)/sum(iif(Fields!CallsHandled.Value=0, nothing
,Fields!CallsHandled.Value))) / 60) &":"& Format(DateAdd("s",
Avg(iif(count(iif(Fields!CallsHandled.Value=0, nothing
,1))=0,"",sum(Fields!AHT.Value)/sum(iif(Fields!CallsHandled.Value=0, nothing
,Fields!CallsHandled.Value)))), "00:00:00"), "ss"))
它尝试在HandledCalls字段中确定哪些行的数字大于零,然后通过获取AHT的总和并将其除以HandledCalls的数量来平均AHT字段。在此过程中的某个位置会导致此错误:
“textrun'AHT.Paragraphs [0] .TextRuns [0]'的值表达式包含错误:[BC30451]名称'iff'未声明。”
被抛出。
有没有人曾经使用SSRS显示以这种方式计算的平均值(仅使用非零条目),同时显示平均值,其中仅包含时间跨度内的秒数,以分钟为单位?
编辑:我的表达开头有一个拼写错误。它在运行报表时不再抛出错误消息,但现在每个单元格都包含#Error,无论HandledCall编号如何。
答案 0 :(得分:0)
在第一个条件测试中,计数结果(""
或基于iif
语句的平均值)除以60.令人惊讶的是,SSRS可以正常使用在""
/ 60的情况下,你仍然得到0.然而,该语句继续测试一个数字(0或平均值)和字符串(""
)的相等性,这是正在进行的导致你看到的#Error
。
所以基本上通过将第一个条件中的""
更改为0来将数字与数字进行比较:
=iff(Floor(iif(count(iif(Fields!CallsHandled.Value=0, nothing
,1))=0,"",sum(Fields!AHT.Value)/sum(iif(Fields!CallsHandled.Value=0, nothing
,Fields!CallsHandled.Value))) / 60)=0,
"",
Floor(iif(count(iif(Fields!CallsHandled.Value=0, nothing
,1))=0,"",sum(Fields!AHT.Value)/sum(iif(Fields!CallsHandled.Value=0, nothing
,Fields!CallsHandled.Value))) / 60) &":"& Format(DateAdd("s",
Avg(iif(count(iif(Fields!CallsHandled.Value=0, nothing
,1))=0,"",sum(Fields!AHT.Value)/sum(iif(Fields!CallsHandled.Value=0, nothing
,Fields!CallsHandled.Value)))), "00:00:00"), "ss"))
至少应该解决你所看到的#Error
,但由于这个表达很大,我无法保证它能解决所有问题!