COGNOS报告一个简单的子查询并加入Query

时间:2013-03-05 03:25:25

标签: cognos cognos-8 cognos-bi cognos-tm1

这是我的查询。我是Cognos新手并使用Cognos 10.我在开发使用Sub Query和Inner Join Query的报告时遇到了一些困难。

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

1 个答案:

答案 0 :(得分: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'。在数据项中“DATE”字段的属性中,您可以将“Agregate函数”从“无”更改为“最大值”。

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

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

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

    b。)创建一个新报告,只需拖动表a和表b中的元素即可。他们的关系已在Framework管理器中定义,因此在编写报告时无需重新定义它。

  3. 你的第二个例子很好地展示了像Cognos这样的BI程序的强大功能。报告作者不需要完全理解两个表的连接方式......它们只是从每个表中提取元素并且它们起作用,因为关系已经在框架中定义。