Cognos Report Studio - For循环?

时间:2016-01-26 19:27:16

标签: report cognos cognos-10 cognos-bi

我有一个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个月。然后,我在报告的crosstable上添加了每个列。

嗯,这个解决方案非常丑陋,而且难以理解。有没有办法在Report Studio上迭代变量,为每次迭代创建一个行或列?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

    SupportLibrary
  2. 使用日期从现有表创建查询主题。查询项目[月]

    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
    ....
    

    过滤
    _last_of_month([date_field])
    

    并检查查询属性&#34; Auto Group and Summarize&#34;已设置&#34;是&#34;。 小心选择小而密集的桌子作为来源。

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

    的查询项
    [date_field] < _add_months(current_date;-24)
    

    称之为&#34; 1&#34;同样。添加另一个QI,将其称为[Back],表达式

    1
    

    过滤它:

    running-total([1])
    

    添加另一个带表达式的QI

    [Back] <= 24
    

    这是您的[月]字段

  4. 按条件

    加入此查询主题和进程列表
    _last_of_month(_add_months(current_date;-[Back]))
    

    不只是计算每个[月]

    的行数