繁体   English   中英

用于简单子查询和连接查询的 COGNOS 报告

[英]COGNOS report for a simple sub query and join Query

这是我的查询。 我是 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 会生成自己的 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.) 现在编辑您的 Query1,在该查询的日期上添加一个过滤器。 在表达式定义中,选择查询选项卡并从您的 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 程序的强大功能。 报告作者不需要完全理解两个表的连接方式......他们只需从每个表中提取元素即可工作,因为框架中已经定义了关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM