2013-01-05 45 views
4

我有一個交叉表報告,用於計算我的產品的失敗率;它有兩個措施(通過計數,故障計數),並計算FAILRATE(故障計數/通過計數​​+故障計數)如何使用Cognos Report Studio更改默認的Total()計算

報表佈局看起來正是如此:

    OEM 
        MODEL 
TESTYEAR TESTMONTH PASSCOUNT FAILCOUNT FAILRATE 

當我選擇了總計圖標,它在邏輯上增加了各像列,以便

2012 OCT 7547 697 0.08 
    NOV 9570 373 0.04 
    DEC 1879 107 0.05 
------------------------ 
Total 18996 1177 0.17 

我的用戶。然而,想要TOTAL FAILRATE是

TOTAL FAILCOUNT/(TOTAL PASSCOUNT+TOTAL FAILCOUNT) 

它翻譯成

1177/(18996+1177) = 0.058 

如何在報告中創建此自定義總數?我正在閱讀有關創建查詢計算的信息,但我不清楚這是否是正確的方法。

Cognos報表工作室8.4 IBM DB2 UDB

回答

3

你的確可以。有幾個方法。

在您的報告查詢中,您有單個查詢項目,其中包含您期望的計算正常工作(PASSCOUNT,FAILCOUNT等)。您可以在同一個查詢項目列表中創建新的數據項目/表達式並編輯定義。在左側,您可以選擇使用原始數據源中的列,但是您可以選擇另一個窗格來實際重新使用您在同一查詢中定義的其他查詢項目/計算(PASSCOUNT FAILCOUNT FAILRATE)。 Cognos知道,當您使用同一查詢中的其他列創建表達式時,首先解決這些查詢項目以解決依賴於它們的計算。你想確保你的計算/派生列在其他依賴查詢項目之後列出(實際上這可能並不重要,但在查看時它是有意義的)。此外,我相信你將不得不將失敗率查詢項目/表達式設置爲「計算」作爲其聚合方法。

摘要行可能會/可能不會有點棘手。在我面前沒有報告工作室時,將總計部分添加到列表報告並使用新的失敗率表達式來擴展正確的計算方式,或者您可能需要使用其他方法來執行摘要這是一個報告表達式。

您不是在查詢中創建報告表達式,而是在報告的gui頁面(它在沿着邊桌,單身等的工具箱中)創建報告表達式。它有一個表達式構建器,就像查詢中一樣,但是您會注意到函數集是不同的,因爲它是在查詢運行後完成的,並且結果返回後,像您這樣簡單的事情可以很好,這只是數學,但您會注意其他數據庫函數在報表表達式中不可用,只是因爲它們出現在html輸出中,而不是在針對數據庫運行查詢期間發生。

希望這會有所幫助。總之,您正在根據相同查詢/結果集中其他列的彙總計算創建計算列。這在理論上與此SQL語句相同,因爲SQL不允許直接使用它,但希望它有助於解釋Cognos正在做什麼。

選擇1 + 2作爲故障計數,2 + 3 AS通過計數,(失敗計數/通過計數​​+故障計數)AS FAILRATE從SOMETABLE - COGNOS能夠在同一個查詢中使用的結果其他聚合計算列,如果你根SQL你可以看到它如何安排SQL來做到這一點。

感謝,

+0

已接受,但我無法對您的詳細答案進行投票。我希望我能。謝謝。 – Chris

3

它接在交叉右總很重要。
當您添加總行時,請確保您選擇自動摘要:
Cognos Automatic Summary
此選項將確保聚合由每個查詢數據項單獨確定。
如果它仍然沒有給你預期的結果,那麼在查詢瀏覽器中,選擇交叉表上正在使用的查詢,並在失敗數據項上選擇計算的選項(在屬性面板上):
Cognos Aggregate function property

+2

我確實選擇了「計算」。解決方案是在解決順序選項:我選擇了「2」(大於0),它的工作。 – Chris

+0

我想我在第一次回覆時錯過了你的觀點。它是有道理的,我開始明白,當使用交叉表時,計算(及其聚合類型)會相應地驅動每個結果。儘管列表報告似乎不是這種情況。 – Chris

0

在交叉表中報告發生的事情是柱狀數據首先N,則呈現的行級數據,所以這是你的問題的原因..To解決此點擊列名稱標題'失敗'&爲它分配一個求解秩序= 1,只要總和的求解順序是NULL ..訣竅是解決順序將控制所有其他完成後計算FAILRATE的計算。

相關問題