业务对象:查找并显示第二个日期时间戳



我正在努力理解我和同事正在尝试创建的业务对象 4.2 webi 报告中的计算。

该报告涉及我们服务管理系统的ChangeLog,并查看工单被打开和关闭的次数。

在我们的数据提供程序查询中,对于每个票证,从宇宙中返回多行,其中对象 [更改日志事件详细信息] 中文本字符串的开头是"状态更改为打开"或"状态更改为关闭"。名为 [更改日志事件日期和时间] 的对象保存日志事件的日期时间戳。

所需的报告结构是一个表,其中的字段是 [公司名称]、[事件编号]、[第一次关闭]、[第二次关闭],以及稍后要添加的更多字段。像这样:

Company Name  | Incident No |    1st Closure      |    2nd Closure       |
-------------------------------------------------------------------------
A N Other Plc | FLT01234567 | 18/04/2017 11:11:08 |  21/04/2017 10:30:05 |

[公司名称]和[事件编号]是宇宙中的物体,因此我们刚刚在报告中直接引用了这些物体。

[第一次关闭] 使用返回事件的最小([更改日志事件日期和时间](值的计算工作正常。

[第二次关闭]是我们被困的地方!我已经阅读了几篇关于在报表计算中应用上下文的主题的文章,但似乎不能完全正确。 我觉得我们已经接近下面的计算,但它目前返回一个 #MULTIVALUE 错误。"避免重复行聚合"选项目前在"格式表"对话框中处于禁用状态,以防万一。

=[Change Log(s) Event Date And Time] Where((Left([Change Log(s) Event 
Details];20)="Status set to Closed") And Rank([Change Log(s) Event Date And 
Time];Bottom)=2)

任何人都可以帮助解决方案吗?

在查询或报表中可能有某种方法可以做到这一点。但是,如果你控制了宇宙,你可以创建一个看起来像这样的派生表......

SELECT a1.CompanyName, a1.IncidentNo, a1.FirstClosure, b1.SecondClosure
FROM
(
SELECT CompanyName, IncidentNo, MIN(dtLastChangeLogDateTimeAttempt) AS 'FirstClosure'
FROM ChangeLog
GROUP BY CompanyName, IncidentNo
) a1
LEFT JOIN
(
SELECT b.CompanyName, b.IncidentNo, MIN(a.dtLastChangeLogDateTimeAttempt) AS 'SecondClosure'
FROM ChangeLog a
INNER JOIN
(
SELECT CompanyName, IncidentNo, MIN(dtLastChangeLogDateTimeAttempt) AS 'FirstClosure'
FROM ChangeLog
GROUP BY CompanyName, IncidentNo
) b ON a.CompanyName = b.CompanyName AND a.IncidentNo AND b.IncidentNo AND a.dtLastChangeLogDateTimeAttempt > b.FirstClosure
GROUP BY b.CompanyName, b.IncidentNo
) b1 ON a1.CompanyName = b1.CompanyName AND a1.IncidentNo AND b1.IncidentNo

圣诞颂歌

最新更新