【问题标题】:Cognos 11 - filter between query subjectsCognos 11 - 查询主题之间的过滤器
【发布时间】:2020-10-10 04:00:49
【问题描述】:

给定表 A 的列:ColA1、ColA2、ColA3

还有一个带有列的表 B:ColB1

我想根据表B中的数据限制可以从表A返回的数据,比如:

ColA1 not in ColB1

理想情况下,以某种方式将 SQL 查询与 select 语句结合到过滤器中

【问题讨论】:

    标签: cognos cognos-11


    【解决方案1】:

    你想要的是

    SELECT a.ColA1
    , a.ColA2
    , a.ColA3
    
    FROM TableA a
      LEFT OUTER JOIN TableB b on b.ColB1 = a.ColA1
    
    WHERE b.ColB1 IS NULL
    

    所以...
    Query1 包含 TableA 中的 ColA1、ColA2 和 ColA3。
    Query2 包含 TableB 中的 ColB1。
    查询3

    • 在 ColA1 1..1 = 0..1 ColB1 上连接 Query1 和 Query2
    • 数据项:ColA1、ColA2、ColA3
    • 过滤器:ColB1 不为空

    【讨论】:

    • 这是在查询主题中还是在独立过滤器中?在查询主题中,我通过 where 子句添加了一些过滤器,但它们似乎不起作用。它们在 SQL 中运行时以及在 Oracle 中运行 Cognos 11 生成的 SQL 时都可以工作,但我猜测由于 Framework Manager 中的连接/链接,where 子句会以某种方式损坏,因此无法正常工作
    • 我猜您以前从未使用过 Cognos?您不要将 WHERE 子句放在数据项表达式中。在 Cognos 中,您可以拖放。我描述的是创建 2 个查询并将它们加入第三个查询 - 以及如何配置连接。 SQL 代码仅供参考,以防您认为 SQL 代码比 Cognos GUI 更好。
    【解决方案2】:

    不存在可能就是你要找的东西

    试试这样的

    select * from TableA as T1  
    where not exists                                                  
      (select * from TableB as T2         
        where t1.key1 = t2.key1 and T1.key2 = t2.key2)                
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-24
      • 2012-02-02
      • 1970-01-01
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多