【问题标题】:Returning the Maximum of Date1 and Date2 in Cognos 10.2在 Cognos 10.2 中返回 Date1 和 Date2 的最大值
【发布时间】:2017-07-03 07:11:46
【问题描述】:

在我的公司,我们最近从 SSRS 转移到了基于 Cognos 的报告系统,我对 Cognos 整体没有太多经验,并且遇到了一些看起来很容易解决的问题,但我正在苦苦挣扎远。

在我们的数据库中,我们分离了两种联系日期信息 [Date Emailed] 和 [Date Called],我试图将两者结合起来以返回 [Date Contacted] 字段。

我在 Cognos 报表生成器中是否有办法找到这两个数据项的最大值?
我本来希望可以使用如下所示的某种“c = MAX(a,b)”函数,但据我所见,显然不是。

[联系日期] = MAX([电子邮件发送日期], [呼叫日期])

此外,我们无权修改 SQL 或任何与 Cognos 相关的部分,除了报表生成器,这让这一切变得更加有趣。

我觉得答案将是建立一个 CASE 语句来做到这一点,但如果可以的话,我宁愿远离 CASE。

谢谢,
蓝光

【问题讨论】:

  • 如果没有使用 Cognos 函数的 IF...THEN 构造的 CASE 语句,我认为您无法做到这一点。但是,您可以尝试数据源特定的功能。当 Cognos 看到适当的数据源特定函数时,它会将它们传递到它们在数据源上执行的位置。不知道你的数据来源,我无法给出更具体的建议。
  • 谢谢你,只是证实了我到目前为止的期望。我反对 case/IF..THEN 语句的唯一原因是,当查询的其他部分正在运行时,运行速度被拖慢了。看来没有办法了!
  • 根据我的经验,选择一列或另一列的简单 CASE 语句不会明显减慢报告速度。大部分处理时间用于从数据源获取原始数据。 CASE 解决方案是在所有这些都完成之后发生的。如果您想确定,您可以安装我的 Cognos 性能测量脚本,它会在您每次运行报告时提供有关报告运行时间的反馈。链接如下:cogblogger.com/2015/11/…。记下更改前后的时间以查看影响。

标签: business-intelligence cognos cognos-10


【解决方案1】:

我想知道您是否可以使用 _days_between 来确定哪个是较新的日期。 像这样的:

案例 (_days_between (X, Y) > 0 )

那么 (x)

// 或 Y;如果第一个参数大于第二个参数,我不记得返回的值是负数还是正数。表达式编辑器的帮助会说。无论如何,这只是给你指明一个方向,而不是让我从西奈山下来。

案例

(_days_between (X, Y) > 0 )

然后

(x) // 或 Y;

Else(x 或 y,但没关系,因为没有区别)

【讨论】:

  • 他说他不想使用 CASE 语句。如果 CASE 语句没有被排除在外,那么您可以简单地执行CASE WHEN X >= Y THEN X ELSE Y END。没有必要计算之间的天数,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多