我有一个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上迭代变量,为每次迭代创建一个行或列?
谢谢!
答案 0 :(得分:0)
您可以在Report Studio中模拟时间序列。 有一些选择:
如果允许在RS中使用SQL。创建一个查询主题,如:
SupportLibrary
使用日期从现有表创建查询主题。查询项目[月]
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;。 小心选择小而密集的桌子作为来源。
根据任何超过24行的现有表创建查询主题。添加带表达式
的查询项[date_field] < _add_months(current_date;-24)
称之为&#34; 1&#34;同样。添加另一个QI,将其称为[Back],表达式
1
过滤它:
running-total([1])
添加另一个带表达式的QI
[Back] <= 24
这是您的[月]字段
按条件
加入此查询主题和进程列表_last_of_month(_add_months(current_date;-[Back]))
不只是计算每个[月]
的行数