这是我的查询。我是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
答案 0 :(得分:0)
首先,您必须了解Cognos会生成自己的SQL。为了实现这一点,您必须在Cognos Framework Manager中定义表之间的关系。完成后,您的报告有3个主要部分:报告页面,提示页面和查询。
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。)你完成了!运行报告。在这种情况下,运行报告的用户没有输入,因此不需要提示页面。
a。)在Framework Manager中设置表A和B.您需要通过星型模式在Framework Manager中定义表A和B之间的关系(定义A.ID = B.ID并指定1到n或n到1)。
b。)创建一个新报告,只需拖动表a和表b中的元素即可。他们的关系已在Framework管理器中定义,因此在编写报告时无需重新定义它。
你的第二个例子很好地展示了像Cognos这样的BI程序的强大功能。报告作者不需要完全理解两个表的连接方式......它们只是从每个表中提取元素并且它们起作用,因为关系已经在框架中定义。