2016-12-28 80 views
0

我已經使用傳遞SQL語法在Cognos Report Studio中創建了一個報告。我的查詢包括幾個公用表表達式。我如何將提示傳遞給我的查詢?我想用一個可選日期過濾器,然後用於兩個cte:s。然後需要另一個和多選文本過濾器將在最終選擇語句中使用。在傳遞SQL時​​使用cognos報告工作室提示

下面是我的查詢的簡化版本:

WITH in_date AS 
    (SELECT * FROM in_dates WHERE in_date > optional_date_prompt), 

out_date AS 
    (SELECT * FROM out_dates WHERE out_date > optional_date_prompt), 

organisation AS 
    (SELECT * FROM organisation) 

-- some joins and unions later i end up with this table 
SELECT * FROM final_table 
WHERE organisation_name = 'required_text_prompt' OR 
    organisation_name = 'optional_text_prompt_value' 

要使用提示適用的報告頁面上以一定COGNOS過濾器是不是一種選擇,因爲該報告將需要幾個小時才能運行。

回答

0

要將參數直接傳遞給SQL,請使用宏。一個名爲org的字符串提示符的提示宏如下所示:

#prompt('org','string')# 

第一個參數是提示名稱,第二個參數是類型。這是需要指定的最小參數量。還有其他可選參數,例如可以指定的默認值。您可以查閱Cognos文檔以獲取更多選項。

你把提示的宏觀WHERE子句中:

WHERE organisation_name = #prompt('org','string')# 

COGNOS會看到宏觀和發送SQL語句到數據源之前解決它。

+0

謝謝!我使用SQL IN-clause做了類似的解決方案,如下所示:'organisation_name IN(#promptmany('prompt_organisation')#)' –