SSRS将十进制秒转换为hh:mm:ss

时间:2014-08-23 15:32:21

标签: reporting-services time

我正在尝试在不同组级别的SSRS中进行平均通话时间计算。我使用下面的公式计算IBTOTALTALKIBTOTALHOLDIBTOTALWRAP的平均值。

=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消息。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

DateAdd函数不会为您舍入,看起来您想要从毫秒到秒向上舍入。 使用圆形功能..

format(dateadd("s", Round(Fields!IBTOTALTALK.Value / Fields!CALLS_HANDLED.Value, 0, system.MidpointRounding.ToEven) , "00:00:00"), "HH:mm:ss")