我希望在Cognos11中为本财年与上一财年同一时间范围内的出席约会生成报告。例如,我在2021年6月1日运行报告,我应该获得2021年4月和5月的约会总数以及2020年4月和5月的约会总数的数据。请告诉我如何设置日期过滤器。谢谢
发布于 2021-05-22 03:59:34
你没有提供任何上下文。有很多方法可以做到这一点。仅仅提供筛选器表达式是行不通的,因为我不知道报告的其余部分是什么样子。
在纯文本中描述Cognos的这种通用解决方案并不简单。我还假设,由于您使用的是Cognos,所以数据库结构是一个星型模式,其中包含一个时间维度,该维度的FiscalYear和FiscalMonthNumber列都是整数。此外,您的会计年度从1月1日到12月31日。
使用Cognos函数:
[FiscalYear] * 100 + [FiscalMonthNumber]
between
_year(_add_months(current_date, -2)) * 100 +
_month(_add_months(current_date, -2))
and
_year(_add_months(current_date, -1)) * 100 +
_month(_add_months(current_date, -1))
or
[FiscalYear] * 100 + [FiscalMonthNumber] + 100
between
_year(_add_months(current_date, -2)) * 100 +
_month(_add_months(current_date, -2))
and
_year(_add_months(current_date, -1)) * 100 +
_month(_add_months(current_date, -1))使用Cognos宏:
[FiscalYear] * 100 + [FiscalMonthNumber]
between
#timestampMask (_add_months($current_timestamp, -2), 'yyyymm')#
and
#timestampMask (_add_months($current_timestamp, -1), 'yyyymm')#
or
[FiscalYear] * 100 + [FiscalMonthNumber] + 100
between
#timestampMask (_add_months($current_timestamp, -2), 'yyyymm')#
and
#timestampMask (_add_months($current_timestamp, -1), 'yyyymm')#使用Cognos宏的优点是在发送到数据库服务器之前计算一次值,而不是由数据库服务器计算每一行的值。
发布于 2021-05-28 23:02:10
更改筛选器
说明
过滤器应如下所示:
([Date] between [CurrentStart] and [CurrentEnd])
OR
([Date] between [PriorStart] and [PriorEnd])创建一些数据项,使这一过程更容易一些
offset ,注意:offset允许您更改起始月份/期间
这是一月份的航班。
extract(month, current_date) -1这是四月份的航班
extract(month, current_date) -4CurrentStart
_first_of_month (_add_months(current_date, -[Offset]))CurrentEnd,注意:如果不需要提示符,只需交换?PrmDate?使用Current_date
_add_months(?PrmDate?,-1)PriorStart
_add_years([CurrentStart], -1)PriorEnd
_add_years([CurrentEnd],-1)https://stackoverflow.com/questions/67640575
复制相似问题