首页 文章

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

提问于
浏览
1

我有查询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 回答

  • 1

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

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

    • 您想加入一列([Level1])

    • 您想加入两列([Level1]和[Level2])

    对于您始终想要加入的列,我们不会更改任何内容 . 对于第二个连接列,我们创建一个仅用于连接的新数据项 . 对于此示例,我们将其称为“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 . [Level1] = b . [Level1]和a.'1'= b.'1'

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


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

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

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

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

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


    该技术假定使用内连接 . 可以以类似的方式添加其他连接条件 .

相关问题