我无法汇总存储在SQL事实表中的电话通话时间
我有一个按人次的电话通话时间的SQL表,该表正在Cognos Analytics数据模块中使用。
我想在交叉表中使用此数据,并以HH:MM:SS报告每个人的总通话时间。
当我尝试总计时间时,SQL列的格式为time(0),Cognos抛出[MSR-VRF-1202列“ Call Length”的数据类型为“ time”并且无法聚合]错误。
显示总通话时间的正确方法是什么。
更新
通过使用Cognos Anaytics中的许多查询计算,我设法解决了一半的问题。 我更新了SQL事实表,以秒为单位添加了新的时间度量,然后使用了以下查询项。
HH作为楼层(总计([CALLTIMEINSECONDS])/ 3600)
MM为底楼(([CALLTIMEINSECONDS]-[HH] * 3600)/ 60)
SS为[CALLTIMEINSECONDS]-([[HH] * 3600)-([MM] * 60)
HH1作为IF([HH] <10)然后('0'+ CAST([HH],VARCHAR(4)))ELSE(CAST([HH],VARCHAR(4)))
MM1作为IF(MM <10)然后('0'+ CAST(MM,VARCHAR(2)))ELSE(CAST(MM,VARCHAR(2)))
SS1作为IF(SS <10)然后('0'+ CAST(SS,VARCHAR(2)))ELSE(CAST(SS,VARCHAR(2)))
ALL TIME as [HH1] +':'+ [MM1] +':'+ [SS1]
这适用于各个Crosstabs行,但是不会汇总,也不适用于任何图表。
答案 0 :(得分:1)
为什么两个人会花时间阅读并投票表决真正的援助请求?我认为这是一个分享知识和经验的地方。显然,这些人需要更多地生活,生活或被解雇。抱歉,我禁不住希望
答案 1 :(得分:0)
我假设
相应地调整最终解决方案。
我在SQL中的解决方案是:
format(sum(DATEDIFF(second, TIMEFROMPARTS(0,0,0,0,0), [CallDuration])) / 3600, '0#') + ':' +
format(sum(DATEDIFF(second, TIMEFROMPARTS(0,0,0,0,0), [CallDuration])) / 60, '0#') + ':' +
format(sum(DATEDIFF(second, TIMEFROMPARTS(0,0,0,0,0), [CallDuratoin])) % 60, '0#')
基于Cognos的解决方案可能涉及多个查询。基本内容如下:
如果分别计算零件,则可以在页面上完成格式设置,而不是在Cognos中查询5个文本项,其中一些 Source type 为 Text ,一些具有报告表达式或数据项值的源类型。换句话说,有3个查询计算和2个文本项。
<hours>:<minutes>:<seconds>