如何从sap bo webi列的下一行减去第一行

时间:2019-08-26 09:17:33

标签: sap business-intelligence hana business-objects

第1列:[pz] line_index 类型:数字 = RowIndex()+ 1

第2列:公司。 输入文字 *每个事件编号都是唯一的

第3栏:审核时间 类型:日期和时间

示例:

[pz] row_index 29 审核时间: 1/8/2019 08:08:06

减:

[pz] row_index 26 审核时间: 1/8/2019 08:02:27

返回结果。

我需要他从每个位置开始(每个位置2个)并返回结果。

1 个答案:

答案 0 :(得分:0)

我正在努力理解您的要求,但是我会尝试一下,也许这将为您提供一个获得所需东西的想法。

我从forum post改编了这个答案。需要注意的是,4.2 SP5具有一些时间戳差异功能。在此之前,请使用此定义创建一个名为从上一步经过的分钟数的变量...

=If (Not(IsNull(Previous([Audit Datetime])));
(
(
(
ToNumber( Substr( FormatDate( [Audit Datetime] ;"HH:mm:ss" ) ; 1 ; 2 ) ) * 60 * 60 +
ToNumber( Substr( FormatDate( [Audit Datetime] ;"HH:mm:ss" ) ; 4 ; 2 ) ) * 60 +
ToNumber( Substr( FormatDate( [Audit Datetime] ;"HH:mm:ss" ) ; 7 ; 2 ) )
)
-
(
ToNumber( Substr( FormatDate( Previous([Audit Datetime]) ; "HH:mm:ss" ) ; 1 ;2 ) ) * 60 * 60 +
ToNumber( Substr( FormatDate( Previous([Audit Datetime]) ; "HH:mm:ss" ) ; 4 ; 2) ) * 60 +
ToNumber( Substr( FormatDate( Previous([Audit Datetime]) ; "HH:mm:ss" ) ; 7 ; 2) )
)
)
) / 60 +
( DaysBetween( Previous([Audit Datetime]) ; [Audit Datetime] ) * 24 * 60 ))

基本上,您将审核日期时间的时间部分转换为秒,减去 Previous([审核日期时间])的时间部分转换为秒,然后将其转换回秒分钟,如果通过了一整天,则增加一天的时间。我将所有内容包装在if语句中,以便第一行的差异为空白,因为没有上一行要进行比较。

我不清楚这是否是你所追求的。从其他评论看来,您似乎希望找到每行的审核日期时间与第一个审核日期时间之间的差异。为此,我创建了一个名为首次审核日期时间的变量,如下所示...

=Min([Audit Datetime]) In Block

“块中”部分很重要,因此您可以获得整个表的最小审核日期时间。然后,您可以像这样创建一个名为从开始经过的分钟数的变量...

=If (Not(IsNull(Previous([Audit Datetime])));
(
(
(
ToNumber( Substr( FormatDate( [Audit Datetime] ;"HH:mm:ss" ) ; 1 ; 2 ) ) * 60 * 60 +
ToNumber( Substr( FormatDate( [Audit Datetime] ;"HH:mm:ss" ) ; 4 ; 2 ) ) * 60 +
ToNumber( Substr( FormatDate( [Audit Datetime] ;"HH:mm:ss" ) ; 7 ; 2 ) )
)
-
(
ToNumber( Substr( FormatDate( [First Audit Datetime] ; "HH:mm:ss" ) ; 1 ;2 ) ) * 60 * 60 +
ToNumber( Substr( FormatDate( [First Audit Datetime] ; "HH:mm:ss" ) ; 4 ; 2) ) * 60 +
ToNumber( Substr( FormatDate( [First Audit Datetime] ; "HH:mm:ss" ) ; 7 ; 2) )
)
)
) / 60 +
( DaysBetween( [First Audit Datetime] ; [Audit Datetime] ) * 24 * 60 ))

您还可以创建一个经过分钟运行总和变量,该变量使用从上一步经过的分钟来获得与从开始经过的分钟相同的结果。无需创建首次审核日期时间变量...

=RunningSum([Minutes Elapsed from Previous])

这是所有三分钟过去的变量的样子...

enter image description here

如果这不是您想要的,请提供源值和预期结果的表格。对这些值和预期结果进行书面描述会有所帮助,但这还不够。