2016-01-26 2 views
1

У меня есть пакет COGNOS для данных о процессах в моей компании. У всех есть дата начала, а незавершенные процессы не имеют даты окончания. Процесс активен в дате x, если дата начала предшествует x, а дата окончания - после x или пуста. Пакет не имеет временных рядов.Cognos Report Studio - для цикла?

Компания нуждается в отчете с количеством активных процессов в конце каждого месяца в течение последних двух лет. Не имея временных рядов для повторения, я должен был быть творческим. Я создал 24 элемента данных, каждый из которых имеет следующую формулу:

IF (([Start Date] <= _last_of_month(_add_months(current_date;-1))) and 
(([End Date] is missing) or 
([End Date] > _last_of_month(_add_months(current_date;-1))))) 
THEN (1) ELSE (0) 

... вычитание от 1 до 24 месяцев. Затем я добавил каждый из столбца на кросс-платформе отчета.

Ну, это решение действительно уродливое и непримиримое. Есть ли способ выполнить итерацию переменной в Report Studio, создав строку или столбец для каждой итерации?

Спасибо!

ответ

0

Вы можете моделировать временные ряды в Report Studio. Есть несколько вариантов:

  1. Если вам разрешено SQL в RS. Создание запроса Тема, как:

    select _last_of_month(_add_months(current_date;-1)) as Month 
    union all 
    select _last_of_month(_add_months(current_date;-2)) as Month 
    union all 
    .... 
    
  2. Создать тему запроса из существующей таблицы с датами. пункт Запрос [Месяц]

    _last_of_month([date_field]) 
    

    фильтр его

    [date_field] < _add_months(current_date;-24) 
    

    и проверить свойство запроса "Auto Group и Суммировать" установлено "Да". Будьте осторожны с выбором небольшого, но плотного стола в качестве источника.

  3. Создать объект запроса на основе любой существующей таблицы с более чем 24 строками. Добавить элемент запроса с выражением

    1 
    

    Назовите его «1». Добавьте еще QI, назовем его [Назад], выражение

    running-total([1]) 
    

    фильтр это:

    [Back] <= 24 
    

    Добавить еще QI с выражением

    _last_of_month(_add_months(current_date;-[Back])) 
    

    Это ваш [месяц] поле

Чем присоединиться к этой теме запроса с помощью ваш список процессов, по условию

[Time series].[Month] > [Process].[Start Date] and 
([Time series].[Month] < [Process].[End Date] or [End Date] is missing) 

чем просто подсчет строк для каждого [Месяц]

+0

Извините за поздний ответ. Это отлично поработало, спасибо. –

Смежные вопросы