如何在Cognos Analytics 11.1中汇总时间度量

时间:2019-02-15 10:50:54

标签: cognos cognos-11

我无法汇总存储在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行,但是不会汇总,也不适用于任何图表。

2 个答案:

答案 0 :(得分:1)

为什么两个人会花时间阅读并投票表决真正的援助请求?我认为这是一个分享知识和经验的地方。显然,这些人需要更多地生活,生活或被解雇。抱歉,我禁不住希望

答案 1 :(得分:0)

我假设

  • 您将使用术语时间和持续时间作为同义词。
  • 您正在使用MS SQL Server。

相应地调整最终解决方案。

我在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>