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

如何从sap bo webi的下一列中减去第一行,sap,business-intelligence,hana,business-objects,Sap,Business Intelligence,Hana,Business Objects,第1列:[pz]行索引 类型:编号 =行索引+1 第2栏:公司。 输入文本 *每个事件编号都是唯一的 第3栏:审计时间 类型:日期和时间 例如: [pz]行索引 29 审核时间: 2019年1月8日08:08:06 减去: [pz]行索引 26 审核时间: 2019年1月8日08:02:27 返回结果 我需要他从一开始就接受每个职位2,并返回结果。我正在努力理解您的要求,但我会尝试一下,也许这会激发您获得所需的想法 我根据这个改编了这个答案。需要注意的是,4.2 SP5具有一些时间戳差异函数。在

第1列:[pz]行索引 类型:编号 =行索引+1

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

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

例如:

[pz]行索引 29 审核时间: 2019年1月8日08:08:06

减去:

[pz]行索引 26 审核时间: 2019年1月8日08:02:27

返回结果


我需要他从一开始就接受每个职位2,并返回结果。

我正在努力理解您的要求,但我会尝试一下,也许这会激发您获得所需的想法

我根据这个改编了这个答案。需要注意的是,4.2 SP5具有一些时间戳差异函数。在此之前,使用此定义创建一个名为Minutes Passed from Previous的变量

=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 ))
基本上,您将Audit Datetime的时间部分转换为秒,减去之前转换为秒的[Audit Datetime]的时间部分,将其转换回分钟,如果一整天过去了,则添加一天的分钟数。我将其全部封装在一个if语句中,这样,如果第一行的差异为空,因为没有上一行可比较

我不清楚这是否是你想要的。从其他注释中,您可能希望找到每行的审核日期时间与第一个审核日期时间之间的差异。为此,我创建了一个名为First Audit Datetime的变量,如下所示

=Min([Audit Datetime]) In Block
块内部分很重要,这样可以获得整个表的最小审核日期时间。然后您可以创建一个名为Minutes passed from Start的变量,如下所示

=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 ))
您还可以创建一个运行分钟数总和变量,该变量使用前一个变量的分钟数来获得与开始时的分钟数相同的结果,而无需创建第一个Audit Datetime变量

=RunningSum([Minutes Elapsed from Previous])
下面是所有三分钟过去的变量的情况


如果这不是您想要的,请提供源值表和预期结果。给出数值和预期结果的书面描述是有帮助的,但还不够。

是的,我知道,我用过。但是,我想发展它,使它指向我,例如:索引1,时间:上午8:00索引2,时间:上午8:20索引3,时间:上午9:00目标:分别计算它们之间的差异:时间开始:索引2-索引1=20分钟索引3-索引2=40分钟现在:从索引1到索引3计算我使用上一个函数可以指定一个偏移量以跳过多条记录。您还可以研究使用RelativeValue函数。您能帮我创建一个示例公式吗?Index:row_Index,对于每一行审核日期:状态更改的时间,我需要计算:反应时间,正如我上面所写的。我将尝试。请用完整的数据样本和预期结果编辑您的问题好吗?不,我们分别计算每一条记录之间的差异。那么您是否在寻找每一行与第一行之间的差异(以分钟为单位)?不,我们分别计算每一条记录之间的差异