默认通过选定年份的1月份提示
问题描述:
我有2个年份提示。如果我在第一个提示中没有选择任何年份,则默认情况下,报告应该在同一年的一月份运行,在第二个提示中选择。我的提示是值提示并具有字符串值。请帮我实现这个要求。我已经试过#提示宏,?提示?,情况等。我肯定,如果JavaScript会帮助。默认通过选定年份的1月份提示
答
我打算假设您的基础日期字段不会作为日期值类型存储,因为您正在使用字符串。这可能更容易分成4个提示:从月,从年,到月,到年。
过滤器将被隐含的,如果:
(
(?FROM_YEAR? = '' or ?FROM_MONTH? = '') and
[database_from_month] = '01' and
[database_from_year] = ?TO_YEAR? and
[database_to_month] = ?TO_MONTH? and
[database_to_year] = ?TO_YEAR?
)
OR
(
(?FROM_YEAR? <> '' or ?FROM_MONTH? <> '') and
[database_from_month] = ?FROM_MONTH? and
[database_from_year] = ?FROM_YEAR? and
[database_to_month] = ?TO_MONTH? and
[database_to_year] = ?TO_YEAR?
)
上面的样式过滤优越的原因有很多:
- 更可能是sargeable
- 易于理解
- 使用简单的内置Cognos功能;更可能是跨版本兼容
- 没有跨浏览器支持,问题你会使用Javascript
- 代码段会在其他COGNOS工作室工作得到(业务洞察力等)
你可能已经在过滤器中看到CASE语句会引发错误。 CASE语句被传递给SQL,而不是通过Cognos编译成SQL语句。因此它不被视为正确的语法。
,您的解决方案看起来非常好。但是,由于我们必须保持报表之间的一致性,因此我们必须提供YYYY-MM格式的日期提示(以时间维度的字符串格式)。我仍然会尝试使用你的代码来适应我的情况。非常感谢。 – Rashmi
对于FROM和TO可以使用单个提示符,这样更容易解释。解析它。如果这有帮助,请接受答案和upvote。 – toddsonofodin
考虑设置一个日历表,其中年度级别为'FIRST_DAY_OF_YEAR'字段,月份级别为'YYYY-MM'字段。 – Damienknight