我正在尝试在不同组级别的SSRS中进行平均通话时间计算。我使用下面的公式计算IBTOTALTALK
,IBTOTALHOLD
,IBTOTALWRAP
的平均值。
=Iif(IsNothing(SUM(Fields!CALLS_HANDLED.Value))="True",0,
Iif(SUM(Fields!CALLS_HANDLED.Value)=0,0,
Format(DateAdd("s",Sum(Fields!IBTOTALTALK.Value) / Sum(Fields!CALLS_HANDLED.Value), "00:00:00"), "HH:mm:ss")))
然后,我使用以下公式计算整体Call Handle时间:
=Iif(IsNothing(SUM(Fields!CALLS_HANDLED.Value))="True",0,
Iif(SUM(Fields!CALLS_HANDLED.Value)=0,0,
Format(DateAdd("s",(Sum(Fields!IBTOTALTALK.Value)+Sum(Fields!IBTOTALHOLD.Value)+Sum(Fields!IBTOTALWRAP.Value))
/ Sum(Fields!CALLS_HANDLED.Value), "00:00:00"), "HH:mm:ss")))
当我将结果导出到Excel时,“呼叫处理时间”值是正确的,但是如果您尝试在Excel中将三个平均值相加,则会关闭2-3秒,并且客户端希望它是准确的。看起来这些值在Excel中导出为或转换为整数。
正确的价值观
AVG TALK AVG HOLD AVG WRAP AVG CHT
416.706522 36.489130 43.032609 496.228261
0:06:57 0:00:36 0:00:43 0:08:16
什么是显示
AVG TALK AVG HOLD AVG WRAP SUM TOTAL
416 36 43 495
0:06:56 0:00:36 0:00:43 0:08:15
有没有办法导出更精确的时间值,以便它们在Excel中加起来得到正确的结果?我已经在SSRS中尝试了许多不同的时间计算公式,并且上面的公式提供了最一致的结果,而在某些条件下不产生#ERROR消息。任何帮助,将不胜感激。
答案 0 :(得分:1)
DateAdd函数不会为您舍入,看起来您想要从毫秒到秒向上舍入。 使用圆形功能..
format(dateadd("s", Round(Fields!IBTOTALTALK.Value / Fields!CALLS_HANDLED.Value, 0, system.MidpointRounding.ToEven) , "00:00:00"), "HH:mm:ss")