以下是我的查询。我是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个主要部分,报告页,提示页和查询页。
-
)。设置CALENDAR和AOI。Cognos中的TEMP_BRICK表。您可能想要定义TEMP_BRICK之间的关系。BATCH_DT和CALENDAR。日期(假设你的日历对TEMP_BRICK中可能出现的每个日期都有日期记录)。
b。)接下来,您将创建一个新的List Report。您将获取ID、BATCH_DT和DATE字段到列表中。(如果您决定在步骤A中链接两个表,则日期将来自日历,否则您将使用TEMP_BRICK中的BATCH_DT字段。)
c。)您将打开Query页面,看到Cognos已经创建了一个名为Query1的查询。您需要创建一个新的查询(我们将其命名为qryMaxDate)。该查询将包含一个元素,即来自CALENDAR的'DATE'。对于数据项中'DATE'字段的属性,您可以将' aggregate Function'从None更改为'Maximum'。
d。)现在编辑Query1,在该查询的Date上添加一个Filter。在表达式定义中,选择Queries选项卡并从qryMaxDate中拖动'DATE'字段。应该看起来像这样[Batch Date] = [qryMaxDate].[Date]
e)。你完成了!运行报告。在本例中,运行报告的用户不提供任何输入,因此不需要提示页。
-
)。在框架管理器中设置表A和表B。你需要在框架管理器中通过星型模式定义表a和表B之间的关系(定义A.ID = B.ID并指定1到n,或n到1)。
b。)创建一个新报告,简单地从表a和表b中拖动元素。它们的关系已经在框架管理器中定义了,所以在编写报告时不需要重新定义。
第二个示例很好地展示了Cognos等BI程序的强大功能。报表作者不需要完全理解两个表连接的方式…它们只是简单地从每个表中取出元素并工作,因为关系已经在框架中定义了。