2013-03-05 24 views
1

這是我的查詢。我是Cognos和Cognos 10的新手。我在開發使用子查詢和內部聯接查詢的報表時遇到了一些困難。COGNOS報告爲一個簡單的子查詢並加入查詢

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

我認爲你需要進一步解釋一下。你想做什麼? '內循環'不是在編寫SQL時通常使用的術語。 – 2013-03-05 23:17:59

+0

另外,如果這可能與SQL與Tm1有關,所以我建議您刪除tm1標記並添加一個SQL標記 – 2013-03-06 03:20:05

回答

0

首先,你必須明白,COGNOS生成自己的SQL。爲了做到這一點,您必須在Cognos Framework Manager中定義表之間的關係。一旦完成,您的報告有三個主要部分:報告頁面,提示頁面和查詢。

  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 Function'從None擴展到'Maximum'。

    d。)現在編輯您的Query1,在該查詢的Date中添加一個Filter。在表達式定義中,選擇查詢選項卡並從您的qryMaxDate中拖動'DATE'字段。應該是這個樣子[批量日期] = [qryMaxDate]。[日期]

    即)你完成了!運行報告。在這種情況下,運行報表的用戶不會輸入任何內容,因此不需要提示頁面。

  2. 在框架管理器。)設置表A和B.您需要通過Star架構在Framework Manager中定義表A和B之間的關係(定義A.ID = B.ID並指定1到n或n到1)。

    b。)創建一個新的報告,只需從表格a和表格b中拖入元素。他們之間的關係已經在Framework管理器中定義,所以在編寫報告時不需要重新定義它。

第二個例子是BI程序如Cognos的強大演示。報告作者不需要完全理解兩個表加入的方式......他們只是從每個表中提取元素,並且他們工作,因爲關係已經在框架中定義。

+0

因此,這就是它的工作原理!作爲報告作者,我寫了很多SQL,因爲有些項目沒有添加到我們的框架中。有很多報告都需要很少使用的信息,這些信息必須通過不在框架中的SQL來提取。 – 2018-03-07 16:37:22