COGNOS 报告简单的子查询和联接查询

问题描述 投票:0回答:1

这是我的询问。我是 Cognos 新手,正在使用 Cognos 10。而且我在开发使用子查询和内部联接查询的报告时遇到了一些困难。

1.

SELECT ID, BATCH_DT, LOCIT FROM AOI.TEMP_BRICK
             WHERE BATCH_DT < (SELECT MAX(DATE) FROM CALENDAR)

2.

SELECT A.ID, B.SAL FROM TABLE as A LEFT OUTER JOIN TABLE as B
         WHERE A.ID=B.ID
cognos cognos-8 cognos-bi cognos-tm1
1个回答
0
投票

首先,您必须了解 Cognos 生成自己的 SQL。为此,您必须在 Cognos Framework Manager 中定义表之间的关系。完成后,您的报告将分为 3 个主要部分:报告页面、提示页面和查询。

  1. a.) 在 Cognos 中设置 CALENDAR 和 AOI.TEMP_BRICK 表。您可能想要定义 TEMP_BRICK.BATCH_DT 和 CALENDAR.DATE 之间的关系(假设您的日历具有 TEMP_BRICK 中可能出现的每个日期的日期记录)。

    b.) 接下来您将创建一个新的列表报告。您可以将 ID、BATCH_DT 和 DATE 字段放入列表中。 (如果您决定在步骤 A 中链接两个表,则日期将来自日历,否则您将使用 TEMP_BRICK 中的 BATCH_DT 字段。)

    c.) 您将打开“查询”页面,并看到 Cognos 已经创建了一个名为 Query1 的查询。您需要创建一个新查询(我们将其称为 qryMaxDate)。该查询将包含一个元素,即 CALENDAR 中的“DATE”。在数据项中“日期”字段的属性上,您可以将“聚合函数”从“无”更改为“最大值”。

    d.) 现在编辑您的查询 1,在该查询的日期上添加过滤器。在“表达式定义”中,选择“查询”选项卡并从 qryMaxDate 中拖动“日期”字段。应该看起来像这样 [Batch Date] = [qryMaxDate].[Date]

    e.) 你完成了!运行报告。在这种情况下,运行报表的用户没有提供任何输入,因此不需要提示页面。

  2. a.) 在 Framework Manager 中设置表 A 和 B。您需要通过星型模式在 Framework Manager 中定义表 A 和表 B 之间的关系(定义 A.ID = B.ID 并指定 1 到 n,或 n 到 1)。

    b.) 创建一个新报告,然后简单地拖入表 a 和表 b 中的元素。它们的关系已经在 Framework manager 中定义好了,所以在写报告的时候不需要重新定义。

您的第二个示例很好地展示了 Cognos 等 BI 程序的强大功能。报告作者不需要完全理解两个表的连接方式...他们只需从每个表中提取元素即可工作,因为框架中已经定义了关系。

© www.soinside.com 2019 - 2024. All rights reserved.