Cognos Report Studio - For 循环?

Cognos Report Studio - For loop?

我有一个 COGNOS 包,用于存储我公司内部流程的数据。它们都有开始日期,未完成的流程没有结束日期。如果开始日期早于 x 且结束日期晚于 x,或者为空,则流程在日期 x 处于活动状态。该包没有时间序列。

该公司需要一份报告,其中包含过去两年中每个月末的活动进程数。由于没有可迭代的时间序列,我必须要有创意。我创建了 24 个数据项,每个数据项的公式如下:

IF (([Start Date] <= _last_of_month(_add_months(current_date;-1))) and 
(([End Date] is missing) or 
([End Date] > _last_of_month(_add_months(current_date;-1))))) 
THEN (1) ELSE (0)

...减去 1 到 24 个月。然后,我将每个都添加到报表交叉表的一列中。

好吧,这个解决方案真的很丑陋,而且无法维护。有没有办法在 Report Studio 上迭代变量,为每次迭代创建一行或一列?

谢谢!

您可以在 Report Studio 中模拟时间序列。 有一些选项:

  1. 如果你被允许在 RS 中 SQL。创建一个查询主题,例如:

    select _last_of_month(_add_months(current_date;-1)) as Month
    union all
    select _last_of_month(_add_months(current_date;-2)) as Month
    union all
    ....
    
  2. 根据现有 table 日期创建查询主题。查询项目[月]

    _last_of_month([date_field])
    

    过滤

    [date_field] < _add_months(current_date;-24)
    

    并检查查询 属性 "Auto Group and Summarize" 是否已设置 "Yes"。 小心选择小而密集的 table 作为来源。

  3. 根据超过 24 行的任何现有 table 创建查询主题。添加带有表达式

    的查询项
    1
    

    也称它为“1”。添加另一个QI,称其为[返回],表达式

    running-total([1])
    

    筛选:

    [Back] <= 24
    

    添加另一个带有表达式的 QI

    _last_of_month(_add_months(current_date;-[Back]))
    

    这是您的 [月份] 字段

然后按条件将此查询主题加入您的进程列表

[Time series].[Month] > [Process].[Start Date] and
([Time series].[Month] < [Process].[End Date] or [End Date] is missing)

而不只是计算每个 [月] 的行数