Crosstab report работает на 99%.
Около 20 рядов, все, кроме одного, в порядке.
5 колонок - подразделение компании.
Строки - это такие вещи, как стоимость, доход, доход 2 и т. Д.
Все работающие строки имеют три атрибута, которые я использую для их выбора:
Отчетный год
период
Решение.
Проблема в том, что есть таблица, в которой перечислены ставки с начала года для каждого периода. Эта таблица не является специфичной для отдела; это компания в целом.
Все таблицы связаны с таблицей отчетного периода с финансовым годом и периодом. Таким образом, общий запрос ограничивает данные финансовым годом (? PFiscalYear?) И периодом <=? PPeriod?, Основываясь на результатах запроса страницы.
Исходная таблица имеет это:
FY_CD PD_NO ACT_CURR_RT ACT_YTD_RT
2018 1 0,36121715 0,36121715
2018 2 0,32471476 0,34255512
2018 3 0,25240906 0,31210183
2018 4 0,33154745 0,31925874
Обратите внимание, что ставка с начала года не является средней из других чисел.
Когда я выбираю ACT_YTD_RT в качестве строки, я хочу, чтобы ACT_YTD_RT соответствовал выбранному периоду.
То, что я получаю, - это среднее значение, если я устанавливаю агрегацию на среднее значение, или наименьшее, если я устанавливаю ее для других агрегатов. Так что иногда это выглядит правильно (если я бегу за период 1,2,3, так как курс продолжал падать), а иногда это неправильно (период 4
возвращает .3121 вместо .3192).
Я пробовал несколько различных методов и могу генерировать данные мусора (итоги, мин, макс, среднее) и перекрестные соединения, но не могу понять, как получить искомое значение.
Я хочу YTD_RT, где финансовый год =? PFiscal? и period =? pPeriod ?. </p>
Я попробовал прямое предложение if then:
если (sourcetable.fiscalYear =? pFiscalYear?) и (sourcetable.Period =? pPeriod?) тогда (ACT_YTD_RT)
но я получаю ошибку как это:
«ACT_YTD_RT» недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY. (SQLSTATE = 42000, SQLERRORCODE = 8120)
Если я создаю другой запрос, который генерирует правильный ответ, и пытаюсь включить его, я получаю ошибку перекрестного соединения, что запрос, на который я ссылаюсь, пытается объединить несколько других элементов в запросе перекрестной таблицы.
Объединение не работает (разное количество столбцов).
Не уверен, как будет работать объединение, так как в таблице ставок нет разделения.
Возможно, я мог бы создать представление в базе данных, в котором выполнялось перекрестное соединение таблицы деления и таблицы тарифов, добавить это в структуру, и тогда у меня не было бы перекрестного соединения, поскольку решение было бы в таблице тарифов. (действительно вид), но это как-то неправильно.
Если бы я мог просто написать офигенный параметризованный запрос непосредственно в базу данных, я бы сделал это. Но в кросс-таблицах Cognos 11 я не могу найти место для объекта запроса SQL. И это не должно быть необходимым.
Я часами гонялся за этим по кругу.
У кого-нибудь есть идеи?
Спасибо
Пол