sap - 如何从 sap bo webi 列中的下一行中减去第一行
问题描述
Column1:[pz] line_index 类型:number = RowIndex() + 1
第 2 列:Inc. 输入文本 * 每个事件编号都是唯一的
第三栏:审核时间类型:日期和时间
例子:
[pz] row_index 29 审核时间:1/8/2019 08:08:06
减去:
[pz] row_index 26 审核时间:1/8/2019 08:02:27
返回结果。
我需要他占据每个位置(每个位置 2 个),并从头开始返回结果。
解决方案
我很难理解您的要求,但我会试一试,也许这会激发您获得所需东西的想法。
我从这个论坛帖子中改编了这个答案。值得注意的是,4.2 SP5 具有一些时间戳差异功能。在此之前,使用此定义创建一个名为Minutes Elapsed 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的时间部分转换为秒,减去转换为秒的Previous([Audit Datetime])的时间部分,将其转换回分钟,如果经过一整天,则添加一天的分钟数。我将它全部包装在一个 if 语句中,这样如果你的第一行的差异是空白的,因为没有前一行可以比较。
我不清楚这是否是你所追求的。从其他评论看来,您可能希望找到每行的审核日期时间与第一个审核日期时间之间的差异。为此,我创建了一个名为First Audit Datetime的变量,如下所示...
=Min([Audit Datetime]) In Block
“In Block”部分很重要,以便您获得整个表的最短审核日期时间。然后你可以像这样创建一个名为Minutes Elapsed 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 ))
您还可以创建一个Minutes Elapsed Running Sum变量,该变量使用Minutes Elapsed from Previous来获得与Minutes Elapsed from Start相同的结果,而无需创建First Audit Datetime变量...
=RunningSum([Minutes Elapsed from Previous])
这是所有三分钟经过的变量的样子......
如果这不是您想要的,请提供源值表和预期结果。给出价值和预期结果的书面描述是有帮助的,但还不够。
推荐阅读
- c++ - 如何将具有十六进制值的 std::string 转换为 std::vector
- javascript - 如何从 jQuery.fn.init() 和 jQuery.fn.init 中取出特定值 [prevObject: jQuery.fn.init()]
- javascript - 在数组数组上使用 math.random 的问题
- highcharts - Highcharts 组织结构图的拖放功能
- python - 从 json 文件中提取 URL
- javascript - 如何比较两个对象数组并删除 JavaScript 中的重复项?
- javascript - 如何在我的网站上的光标上制作十字准线效果
- azure-devops - 无法将工件从一个阶段复制到 Azure 管道中的另一个阶段
- java - Eclipse 使用 Maven 更改项目的版本?
- google-sheets - GoogleFinance 在获取股票报价时经常返回#N/A 和内部错误消息