我使用传递SQL语法在Cognos Report Studio中创建了一个报表。我的查询包括几个常见的表表达式。如何将提示传递给我的查询?我想使用一个可选日期过滤器,然后在两个cte:s中使用。然后是另一个必需和多选文本过滤器,将在最终的select语句中使用。
以下是我的查询的简化版本:
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'
要使用提示作为报表页面上应用的常规智能过滤器不是一个选项,因为报表需要数小时才能运行。
答案 0 :(得分:0)
要将参数直接传递给SQL,请使用宏。名为org的字符串提示符的提示宏如下所示:
#prompt('org','string')#
第一个参数是提示名称,第二个参数是类型。这是需要指定的最小参数量。还有其他可选参数,例如也可以指定的默认值。您可以参考Cognos文档以获取更多选项。
您将提示宏放在WHERE子句中:
WHERE organisation_name = #prompt('org','string')#
Cognos将在将SQL发送到数据源之前查看宏并解析它。