截至Cognos中的Date Logic

时间:2014-08-28 16:31:21

标签: sql db2 cognos cognos-8

我正在使用Cognos 10.1.1

我要求62列表报告按列不同。

如果我们根据类别对它们进行分组,31个报告显示BOD,31个显示EOD数据。

EOD(T-2数据)和BOD(T-1数据)。

这是要求。为了减少我们计划将这两个日期逻辑混合在一个报告中的报告数量。

Case 
   when [Time Selection] = 'EOD' then
      [As of date] = _add_days(current_date,-2) 
   else 
      [As of date] = _add_days(current_date,-1) 
end

这很好但报告性能有所下降。它的运行时间比单独的报告要长。

我尝试使用宏,但在生成sql时,上述情况condtion和宏之间没有区别。

请为我提供一个提高报告效果的解决方案。

我们正在使用db2。

提前致谢。

1 个答案:

答案 0 :(得分:-1)

在不知道问题的情况下查看代码,我不会怀疑您的代码会产生性能问题。那说我避免使用=,<>处理日期时等。相反,我使用内置的日期数学函数。

尝试以下方法:

CASE 
   WHEN [Time Selection] = 'EOD' THEN
      _days_between([As of date],current_date) = -1
   ELSE
      _days_between([As of date],current_date) = -2
END

还有另一种语法也可能比现有代码执行得更好。我们可以消除CASE语句并在过滤器中使用简单的布尔逻辑:

([Time Selection] = 'EOD' AND _days_between([As of date],current_date) = -1)
OR
([Time Selection] <> 'EOD' AND _days_between([As of date],current_date) = -2)

这种语法利用了大多数语言的优化,包括SQL,如果AND的第一项返回false,则跳过该行而不评估第二项,因为AND的结果永远不会为真。

相关问题