繁体   English   中英

在多个级别上运行报表时,如何在Cognos报表中重用查询和页面

[英]How to reuse query and page in Cognos report when running reports on multiple levels

我有查询A和查询B,并且都具有级别1,级别2和级别3的数据项。

我有三个使用查询A和查询B的联合查询,如下所示。

Joined Query 1 ---- a.level 1 = b.level 1

Joined Query 2 ---- a.level 1 = b.level 1 and a.level 2 = b.level 2

Joined Query 3 ---- a.level 1 = b.level 1 and a.level 2 = b.level 2 and a.level 3 = b.level 3

当用户在提示页面上选择级别1时,报告将使用Joined Query 1来检索数据。

当用户在提示页面上选择级别2时,报告将使用Joined Query 2来检索数据。

当用户在提示页面上选择级别3时,报告将使用Joined Query 3来检索数据。

但是,以这种方式,我必须创建3个页面和3个列表,并使用不同的Joined Queries。 当需求发生变化时,维护工作量太高,因为我必须修改三遍。

有什么想法在这种情况下重用查询和页面吗? 我想知道Cognos Report Studio中是否有条件联接功能?

对于您的问题,我有一个新颖的解决方案。 除了创建三页之外,您还可以通过处理联接列来摆脱一页。

让我们将示例简化为由单选按钮确定的两种情况:

  1. 您想加入一列([Level1])
  2. 您想加入两列([Level1]和[Level2])

对于您一直想加入的列,我们不会做任何更改。 对于第二个联接列,我们创建一个仅用于联接的新数据项。 在此示例中,我们将其称为“ Join2”。 对于表达式,我们输入了CASE语句(如果愿意,则输入if..then):

CASE ?radioButton? 
WHEN 1 THEN '1' 
WHEN 2 THEN [Level2]
END

在两个要连接的查询中创建相同的数据项。 显然,应调整名称以匹配您的列。 另外,我假设级别是一个字符串,因此为上面的“ 1”。 它应该与可选联接列的类型匹配,否则您将收到类型不匹配错误。 将连接表达式更改为除了您总是要连接的[Level1]列之外的第二列。

让我们检查一下效果。


如果用户选择1,则加入条件为:

a。[Level1] = b。[Level1]和a。[Join2] = b。[Join2]

...但有效的加入将是:

a。[Level1] = b。[Level1]和a.'1'= b.'1'

我们已经使第二个联接条件变得多余,这正是我们想要的。


如果用户选择2,则加入条件为:

a。[Level1] = b。[Level1]和a。[Join2] = b。[Join2]

...但有效的加入将是:

a。[Level1] = b。[Level1]和a。[Level2] = b。[Level2]

在这种情况下,我们强制执行第二级联接条件。


该技术假定使用内部联接。 可以以类似方式添加其他加入条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM