Cognos BI - 将多个查询的结果加入单个表

时间:2018-02-20 17:08:36

标签: cognos cognos-bi

Cognos BI问题 - 我有两个数据表 - 一个包含客户的姓氏和SS#,另一个表有关于这些客户的“扩展信息”。元素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(电子邮件,Prospect Type,Prospect Source)上创建3个单独的查询,并将它们全部加入ProspectData。 这似乎是一项简单的任务,但我不知道该怎么做。有什么建议?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

  • 使用标准内部联接
  • 在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 |
  • 现在,在模型层(如果在Framework管理器中执行此操作)或在结果查询中(如果在报表中执行此操作),使用以下表达式添加三个新数据项:电子邮件地址,潜在客户类型,潜在客户来源:

电子邮件地址

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

将三个新数据项的Aggregate Function属性设置为“Maximum”。这应该会导致您的结果汇总到一行,并在三个新数据项的每一个中都有值。