2014-11-18 5 views
1

У меня есть следующий запрос; Цель состоит в том, чтобы отфильтровать этот запрос днем.Запрос в COGNOS (Report Studio)

Я буду использовать этот же запрос, но сейчас месяц. Как сделать?

WITH DATAS(DATA_CALC) AS(

    SELECT DATE(#prompt('DataIni')#) AS DATA_CALC FROM SYSIBM.SYSDUMMY1 
    UNION ALL 
    SELECT DATA_CALC + 1 DAY FROM DATAS WHERE DATA_CALC < DATE(#prompt('DataFim')#) 

) 

/* ABERTOS */ 
SELECT COUNT(*) AS QUANTIDADE, 'ABERTOS' AS TIPO, 1 AS NUM_LINHA, DATE(TRUNC(SOL.DATA_ABERTURA_SOLICITACAO)) AS DATA 
FROM VW_SOLICITACAO_DETALHE SOL 
    INNER JOIN SOLICITACAO SOL_TAB ON (SOL_TAB.ID_SOLICITACAO = SOL.ID_SOLICITACAO) 
WHERE SOL.COD_TIPO_SERVICO IN ('MC','OP','SA') 
    AND SOL_TAB.ID_AREA_COLABORADOR IN (#promptmany('IDArea')#) 
    AND TRUNC(SOL.DATA_ABERTURA_SOLICITACAO) >= to_date('2014-11-18','YYYY-MM-DD') 
    AND TRUNC(SOL.DATA_ABERTURA_SOLICITACAO) <= #prompt('DataFim')# 
    AND ('TODOS' IN (#promptmany('Sistema')#) OR SOL.COD_PRODUTO IN (#promptmany('Sistema')#)) 
    AND DSC_SITUACAO_SOLICITACAO NOT IN ('Desenvolvimento Cancelado') 
    AND SOL.COD_SOLICITACAO NOT LIKE 'SA%' 
GROUP BY TRUNC(SOL.DATA_ABERTURA_SOLICITACAO) 
+0

Адрес, использованный для вашего CTE Является ли связанный с этим запрос ниже? – Mihai

+2

Я не понимаю ваш вопрос. –

+0

Этот первый запрос с именем DATAS (DATA_CALC) .. не используется в следующем запросе, насколько я могу видеть. Что вы можете сделать, это просто изменить SELECT DATA_CALC + 1 DAY' на 'SELECT DATA_CALC + 1 MONTH' – Mihai

ответ

0

Лучшим решением является create a Time dimension, что включает в себя дни и месяцы. Это не просто подключить к Dynamic SQL, как вы используете выше, поэтому вместо этого вы можете попробовать работать.

студии работа отчета вокруг будет создать год и месяц колонну, и группу на них:

за год: экстракта (год, [datefieldhere])

За месяц: экстракта (месяц , [datefieldhere])