我正在SSRS中创建一个报告,其中显示了通话时间。
在我的T-SQL脚本中,我正在使用:
CONVERT(VARCHAR,DATEADD(second,Call,0),108)AS[Call Duration]
效果很好,例如将时间显示为00:03:20。
但是,当我在SSRS中创建一个表并尝试对所有不同的时间值求和时,它在报告中仅显示#error。我需要该报告能够将这些时间值加起来,以便为每个总机操作员提供总计。因此,例如,如果x警务人员接了三通电话,并且都持续了3分钟,那么我需要总计说00:09:00
您知道一种可以显示总花费时间而不必分别列出每个值的方法吗?我可以总结每次通话的秒数-例如总计540秒-但需要显示为hh:mm:ss
谢谢
答案 0 :(得分:1)
该报告引发错误,因为您试图求和varchar
值。不必尝试格式化SQL查询中的数据,只需将原始格式的值返回到SSRS报告中,然后让您的表示层为您格式化数据即可。
似乎没有使用dateadd
,而是您的通话时长已保存在Call
列中?如果是这种情况,只需将该列返回到报表中,或者将其作为明细行返回(如果需要在报表的其他位置添加明细,则将其汇总),或者在SQL中预先汇总,因为这样做会更好。
然后,您可以按以下格式设置通话时间:
=format(today().AddSeconds(Fields!Call.Value),"HH:mm:ss")
如果您没有在SQL查询中汇总通话秒数,则需要在表达式中执行以下操作:
=format(today().AddSeconds(sum(Fields!Call.Value)),"HH:mm:ss")
显然,此方法假定您不会有超过24小时的通话。如果可能的话,您将需要计算要连接在一起的小时,分钟和秒。