2017-07-03 71 views
0

在我的公司,我们最近从SSRS到基于Cognos的报表系统的感动,我没有与Cognos很多经验作为一个整体,正在到一些问题,似乎很容易修复,但我目前在挣扎。返回日期1和date2的最大在Cognos 10.2

在我们的数据库,我们隔离2种接触最新的信息[日期通过电子邮件发送]和[调用日期],我试图结合两种拿到[联系了日期]字段中返回。

有我在Cognos报告生成办法找到这两个数据项的最多?
我会期望某种类似下面的“c = MAX(a,b)”函数可用,但从我所看到的,显然不是。

[日期联系了] = MAX([通过电子邮件发送日期],[名为date])

而且,我们也没有访问和修改SQL或除报表生成器的任何COGNOS相关的部分,这使得该所有更有趣。

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

感谢,
蓝光

+0

我不相信你可以做到这一点没有任何IF的CASE语句... THEN结构使用Cognos功能。但是,您可以尝试数据源特定功能。当Cognos看到适当的数据源特定功能时,会将它们传递到它们在数据源上执行的位置。不知道你的数据源,我不能给出更具体的建议。 – Johnsonium

+0

谢谢你,只是确认我的期望。 我对case/IF..THEN语句不利的唯一原因是在查询的其他部分正在运行时拖动运行速度。 看起来没有办法绕过它! – BluTak

+0

根据我的经验,选择一列或另一列的简单CASE语句不会显着降低报告速度。大部分处理时间是从数据源获取原始数据。 CASE解决方案发生在所有这些完成之后。如果您想确定,可以安装我的Cognos性能度量脚本,该脚本提供关于报告运行时间的反馈,每次运行时都会提供反馈。以下是链接:http:// cogblogger。COM/2015/11 /自动-Cognos的报告性能测量/。请注意更改前后的时间以查看影响。 – Johnsonium

回答

0

我不知道是否可以使用_days_between,以确定哪些是较新的日期。 像这样:

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

然后(X)

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

情况

(_days_between(X,Y)> 0)

然后

(X)//或Y;

品(x或y,但不要紧,因为没有差别)

+0

他表示他不想使用CASE声明。如果CASE语句没有脱离表格,那么你可以简单地使用'CASE当X> = Y THEN X ELSE Y END'。没有必要计算两者之间的时间, – Johnsonium