【问题标题】:How to use the exceptjoin in Cognos-11?如何在 Cognos-11 中使用 exceptjoin?
【发布时间】:2019-06-18 08:05:59
【问题描述】:

我没有在 Cognos-11 中工作的 except 加入。我在哪里或错过了什么?

对这个分支的初学者有一些了解会很好;-)

到目前为止,我尝试的是进行两个查询。第一个包含“客户”、“开始日期”和“目的”等数据项。第二个查询包含“客户”、“地址”和“社区”等数据项。 我想要完成的是进入query3:query1 中的“客户”在query2 中不可用。对我来说,这听起来像是一个例外加入。

我进入查询工作区,创建了一个 query3 并在其上拖了一个“除外加入”图标。然后我将query1拖到上部空间,将query2拖到下部。我习惯于与其他联接一起获得的是设置新链接、基数等的可能性。现在双击加入不会打开任何弹出窗口。 except-join 的属性显示“设置操作 = 除外”、“重复项 = 删除”、“投影列表 = 手动”。

如何让 query3 填充数据项“客户”,该数据项仅包含仅出现在 query1 中的客户列表?

【问题讨论】:

    标签: join cognos-11


    【解决方案1】:

    在 SQL 术语中,你想要

    select T2.C1
    from T1
      left outer join T2 on T1.C1 = T2.C1
    where T2.C1 is null
    

    所以,在 Cognos 报告的查询窗格中...

    • 使用常规联接。
    • 使用来自两个查询的客户加入。
    • 在 query1 端将基数更改为 1..1,在 query2 端将基数更改为 0..1。
    • 在 query3 的过滤器中,为 query2 添加一个过滤器。customer 为 null。

    【讨论】:

      【解决方案2】:

      EXCEPT 不是联接。用于比较两个数据集。

      https://docs.microsoft.com/en-us/sql/t-sql/language-elements/set-operators-except-and-intersect-transact-sql?view=sql-server-2017

      您需要的是 INNER JOIN。这将是 Cognos 工具箱中的连接工具。

      【讨论】:

      • 好的,很清楚。这是一个比较。当我重新阅读它时,这实际上就是这个问题背后的内容。但是,INNER JOIN 不会给我所有相应的数据,而不是来自 query1 的唯一数据吗?
      • 在这种情况下,内连接实际上是一个过滤器。如果您有一个包含值 a、b、c 的表,以及另一个包含值 a、b、d 的表。 select T2.C1 from T1 inner join T2 on T1.C1 = T2.C1 将返回 a 和 b。
      • 这是一个很晚的评论......对不起......我分心了......我真正想要的是一个会给我'c'的回报(鉴于你在您的最新评论)。在 Cognos 中,我不知道如何使用您提到的选择语句。在 Cognos 中有这个屏幕,您可以在其中拖放查询。我不知道如何输入这样的 SQL 语句。我确实知道 SQL Developer 中的这种语句方式。
      • 是的,旧帖子。哇!我的回答没有解决你的问题。查看新答案。
      猜你喜欢
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      相关资源
      最近更新 更多