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

时间:2014-11-17 13:05:46

标签: cognos

我有查询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时,报表将使用“加入的查询1”来检索数据。

当用户在提示页面上选择级别2时,报表将使用“加入的查询2”来检索数据。

当用户在提示页面上选择级别3时,报表将使用“加入的查询3”来检索数据。

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

有没有想过在这种情况下重用查询和页面?我想知道Cognos Report Studio中是否有条件连接功能?

1 个答案:

答案 0 :(得分:1)

我对你的问题有一个新颖的解决方案。而不是创建三个页面,您可以通过操纵连接列来逃脱。

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

  1. 您想加入一列([Level1])
  2. 您想要加入两列([Level1]& [Level2])
  3. 对于您始终想要加入的列,我们不会更改任何内容。对于第二个连接列,我们创建一个仅用于连接的新数据项。对于此示例,我们将其称为“Join2”。对于我们放入CASE语句的表达式(或者,如果您愿意,如果......):

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

    在要加入的两个查询中创建相同的数据项。显然,应调整名称以匹配您的列。此外,我假设水平是一个字符串,因此上面的'1'。它应该与可选连接列的类型匹配,否则将出现类型不匹配错误。除了您想要加入的[Level1]列之外,更改连接表达式以加入第二列。

    让我们检查一下效果。


    如果用户选择1,则连接条件为:

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

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

    a。[等级1] = b。[等级1]和a.'1'= b.'1'

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


    如果用户选择2,则连接条件为:

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

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

    a。[等级1] = b。[等级1]和a。[等级2] = b。[等级2]

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


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