Я создал отчет в Cognos Report Studio с использованием синтаксиса pass through SQL. Мой запрос включает несколько общих табличных выражений. Как передать приглашения на запрос? Я хотел бы использовать один дополнительный фильтр даты, который затем используется в двух 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'
Использование подсказок в качестве обычных фильтров cognos, применяемых на странице отчета, не является опцией, так как выполнение отчета займет несколько часов.
Для передачи параметров непосредственно в SQL используйте макрос. Макрос приглашения для строки с именем org будет выглядеть следующим образом:
Первый параметр-имя приглашения, а второй-тип. Это минимальное количество параметров, которые необходимо указать. Есть и другие необязательные параметры, такие как значение по умолчанию, которое также можно указать. Дополнительные параметры можно найти в документации Cognos.
Макрос приглашения помещается в предложение WHERE:
Cognos увидит макрос и разрешит его перед отправкой SQL в источник данных.