【问题标题】:Cognos BI - Join Results of Multiple Queries into Single TableCognos BI - 将多个查询的结果连接到单个表中
【发布时间】:2018-02-22 02:04:25
【问题描述】:

Cognos BI 问题在这里 - 我有两个数据表 - 一个包含客户的姓氏和 SS #,另一个表包含有关这些客户的“扩展信息”。 Element ID 是存储的数据元素,Ext Cis Value 具有数据值,SS Number 将其与客户联系起来。

我想建立一个列表,列出所有客户,以及 ExtendedInfo 表中三个数据元素中每一个的对应值。在这种情况下,它是#13(电子邮件地址)、#15(潜在客户类型)和#16(潜在客户来源)

这是我今天的数据:

ProspectData 表:

| Last Name             | SS #      |
|-----------------------|-----------|
| ABC Construction, LLC | S10000104 |
| XYZ Construction, LLC | S10000106 |

扩展信息表:

| Element Id | Ext Cis Value | SS Number |
|------------|---------------|-----------|
| 13         | HAS@EMAIL.COM | S10000104 |
| 13         | NO@EMAIL.COM  | S10000106 |
| 15         | HOT PROSPECT  | S10000104 |
| 15         | WARM PROSPECT | S10000106 |
| 16         | External      | S10000106 |
| 16         | Internal      | S10000104 |

我已经能够将这两个表连接在一起以创建这样的结果,但只能通过对 ExtendedInfo 应用过滤器来返回单个字段。示例如图:

| SS #      | Last Name             | Email Address |
|-----------|-----------------------|---------------|
| S10000104 | ABC Construction, LLC | HAS@EMAIL.COM |
| S10000106 | XYZ Construction, LLC | NO@EMAIL.COM  |

我正在尝试设置一个包含五列的查询:SS 编号、姓氏、电子邮件地址(元素 ID 上的#13)、潜在客户类型(#15)和潜在客户来源(#16)。我设想它看起来像这样:

| SS #      | Last Name             | Email Address | Prospect Type | Prospect Source |
|-----------|-----------------------|---------------|---------------|-----------------|
| S10000104 | ABC Construction, LLC | HAS@EMAIL.COM | HOT PROSPECT  | Internal        |
| S10000106 | XYZ Construction, LLC | NO@EMAIL.COM  | WARM PROSPECT | External        |

到目前为止,我最接近的方法是在 ExtendedInfo 表上添加一个新查询,该查询为 Element ID 应用了一个过滤器,然后使用 JOIN 连接该查询的结果和 ProspectData 表。但是,我不知道如何(或者是否可行)在 ExtendedInfo 上创建 3 个单独的查询(电子邮件、Prospect Type、Prospect Source)并将它们全部连接到 ProspectData。 这似乎是一项简单的任务,但我不知道该怎么做。有什么建议么?提前感谢您的帮助。

【问题讨论】:

    标签: cognos cognos-bi


    【解决方案1】:

    您不必加入表格三次。事实上,您只需加入一次。您可以在模型/报告层构建自定义列。

    • 使用标准内部联接在 SS 编号上加入 ProspectData 和 ExtendedInfo

    结果将如下所示:

    | Element Id | Ext Cis Value | SS Number | SS Number | Last Name             |
    |------------|---------------|-----------|-----------|-----------------------|
    | 13         | HAS@EMAIL.COM | S10000104 | S10000104 | ABC Construction, LLC |
    | 13         | NO@EMAIL.COM  | S10000106 | S10000106 | XYZ Construction, LLC |
    | 15         | HOT PROSPECT  | S10000104 | S10000104 | ABC Construction, LLC |
    | 15         | WARM PROSPECT | S10000106 | S10000106 | XYZ Construction, LLC |
    | 16         | External      | S10000106 | S10000106 | XYZ Construction, LLC |
    | 16         | Internal      | S10000104 | S10000104 | ABC Construction, LLC |
    
    • 现在,在模型层(如果在框架管理器中执行此操作)或在结果查询中(如果在报告中执行此操作)添加三个新数据项,电子邮件地址、潜在客户类型、潜在客户来源,其表达式如下:

    电子邮件地址

    CASE 
    WHEN position('@',[Ext Cis Value]) > 0 THEN [Ext Cis Value] 
    ELSE null 
    END
    

    潜在客户类型

    CASE 
    WHEN position('PROSPECT',[Ext Cis Value]) > 0 THEN [Ext Cis Value] 
    ELSE null 
    END
    

    潜在来源

    CASE 
    WHEN position('ternal',[Ext Cis Value]) > 0 THEN [Ext Cis Value] 
    ELSE null 
    END
    

    将三个新数据项的聚合函数属性设置为“最大值”。这应该会导致您的结果汇总到一行,其中三个新数据项中的每一个都有值。

    【讨论】:

    • 非常感谢,这太完美了!我最终稍微调整了额外的数据项,并成功使用了如下所示的格式(即对于 Prospect Source):CASE WHEN [Element Id] = 16 THEN [Ext Cis Value] ELSE null END
    • 我不确定元素 ID 与 Ext Cis Value 的关系如何,否则我会建议您使用什么。根据您的解决方案,它看起来像是一对多,但我不确定提供的信息。 Element Id 和 SS Number 成为定义每一行并为您提供所需结果的复合键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2013-08-10
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2016-05-23
    • 2014-02-11
    相关资源
    最近更新 更多