【问题标题】:Cognos 11 Crosstab - need a value that doesn't have a reference to the column valuesCognos 11 Crosstab - 需要一个不引用列值的值
【发布时间】:2018-05-07 23:02:44
【问题描述】:

Crosstab 报告的工作率为 99%。 大约 20 行,除了 1 行都可以。 5 列 - 公司部门。 这些行是成本、收入、收入 2 等内容。 所有有效的行都有我用来选择它们的三个属性: 财政年度 时期 解决方案。 问题是有一个表格列出了每个时期的 YTD 汇率。该表不是部门特定的;它是全公司的。 所有表都链接到具有会计年度和期间的会计期间表。因此,整体查询根据提示页面结果将数据限制为会计年度 (?pFiscalYear?) 和期间

我尝试了一个直接的 if then 子句: 如果 (sourcetable.fiscalYear = ?pFiscalYear?) 和 (sourcetable.Period = ?pPeriod?) 那么 (ACT_YTD_RT) 但我收到这样的错误: 'ACT_YTD_RT' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。 (SQLSTATE=42000, SQLERRORCODE=8120)

如果我创建另一个生成正确响应的查询并尝试包含它,我会收到一个交叉连接错误,即我引用的查询正在尝试交叉连接交叉表查询中的其他几个项目。

联合不起作用(列数不同)。 由于比率表中不存在除法,因此不确定联接将如何工作。

我也许可以在数据库中创建一个视图,将除法表和费率表交叉连接,将其添加到框架中,然后我不会有交叉连接,因为解决方案将在费率“表”中(真正的观点),但这似乎是错误的。

如果我可以直接向数据库编写一个可怕的参数化查询,我就完成了。但是在 Cognos 11 交叉表中,我找不到 SQL 查询对象的位置。这不应该是必要的。

我花了好几个小时在圈子里追逐这个。

有人有什么想法吗?

谢谢 保罗

【问题讨论】:

  • 这个问题真的可以改写。很难了解正在发生的事情,而且似乎缺少信息(导致“交叉连接错误”的查询是什么)。

标签: business-intelligence cognos


【解决方案1】:

所以之前的问题是这样的:

如果 (sourcetable.fiscalYear = ?pFiscalYear?) 和 (sourcetable.Period = ?pPeriod?) 那么 (ACT_YTD_RT)

产生了这样的错误: 'ACT_YTD_RT' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。 (SQLSTATE=42000, SQLERRORCODE=8120)

要解决上述问题,我必须在数据库中添加除法表和费率表的交叉连接作为视图。然后将其添加到框架中。然后以这种方式构建数据项:

总计 ( 如果 (sourcetable.fiscalYear = ?pFiscalYear?) 和 (sourcetable.Period = ?pPeriod?) 那么 (ACT_YTD_RT) )

现在“总数”提供了缺失的分组依据。并且数据库中的交叉连接提供了划分信息,因此交叉表很高兴。

我仍然认为应该有一个更简单的方法来做到这一点,但我现在有一个正常工作的锤子。

【讨论】:

  • 像您一样通过视图交叉连接是正确的解决方案。另一种方法是在报告中交叉连接查询主题,由于未将过滤条件推送到数据库,这可能会导致更长的运行时间。
猜你喜欢
  • 2016-08-16
  • 2017-04-01
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-21
  • 2019-09-07
  • 2023-03-28
相关资源
最近更新 更多