【问题标题】:Trying to pull Max date less than Date on the row试图拉最大日期小于行上的日期
【发布时间】:2021-01-07 22:02:09
【问题描述】:

我知道这很难,但我基本上是想说。给我一个服务电话及其完成日期,然后给我所有服务电话的最大日期,如果日期小于我正在询问的服务电话的日期。

基本上,我正在寻找的最终结果是,在过去 30 天内是否有关于这台设备的另一个服务电话。

因此,您可以在图片中看到资产 50698 服务电话 579032,我们的日期为 2020 年 11 月 9 日,下面的电话是 2020 年 10 月 22 日,不到 30 天。我想以某种方式找到一种方法来计算发生这种情况的服务调用次数。这可能吗?

【问题讨论】:

    标签: business-objects


    【解决方案1】:

    我认为您正在寻找上下文运算符InForEachForAll(在这种情况下为in

    添加一个变量“MaxAssetDate”并根据您的列标题为其分配一个类似于以下的公式。

    =Max([Service Call Completion Date] In ([Asset ID];[Service Call])) In (Asset ID])

    然后将其添加为一列。如果您有针对给定资产或“日期”的提示过滤,则此列将显示同一资产 ID 的每个服务调用的最大日期。然后添加一个新变量:ServiceCallDaysDiff:然后使用 DatesBetween() 和“MaxAssetDate”以及 ServiceCallCompletionDate 和 DayPeriod; =DatesBetween([ServiceCallCompletionDate];[MaxAssetDate];DayPeriod) 你应该得到一个数字 0-X。然后添加一个过滤器,如果数字在 1 到 30 之间,则显示这些记录,否则隐藏其余记录;或者做任何需要的逻辑。

    现在,如果您要处理数十万条记录,这并不理想,因为您将所有处理都放在 webi 引擎上,而理想情况下它会作为数据库层中的对象发生。但是,如果您只有几千条记录,这应该是可以管理的。

    要添加服务调用计数... 添加变量:ServiceCallsCount: =Sum(Sum(If([ServiceCallDaysDiff]=0;0;1)) In ([AssetID]))

    这将计算非零日差异。请注意,这将超过 30 天,因此如果您想限制 30 天,请调整 if 语句以将不介于 1 和 30 之间的那些设置为零。

    这只是一种方法:可能还有更简单的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      相关资源
      最近更新 更多