2016-01-26 21 views
1

我有一个COGNOS包,用于处理我公司内的流程数据。他们都有开始日期,未完成的流程没有结束日期。如果开始日期在x之前,并且结束日期在x之后或空,则进程在日期x处于活动状态。该软件包没有时间序列。Cognos Report Studio - For循环?

过去两年,该公司需要在每个月末的活动进程数量报告。由于没有时间序列迭代,我必须具有创造性。我创建了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上迭代变量,为每个迭代创建一个行或列?

谢谢!

回答

0

您可以在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. 使用日期从现有表创建查询主题。查询项目[月]由

    [date_field] < _add_months(current_date;-24) 
    

    _last_of_month([date_field]) 
    

    过滤器,并检查查询属性“自动分组和汇总”设置为“是”。 小心选择小而密集的表作为来源。

  3. 根据超过24行的现有表创建查询主题。添加查询项与表达

    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) 

比你的进程列表算了算,每[月]行

+0

很抱歉这么晚才回复。这很好,非常感谢。 –

相关问题