Pentaho Report Designer (PRD): используйте параметр в предложении select

В отчете, с которым я работаю, мне нужно отобразить информацию о четырех столбцах таблицы базы данных. Первые три столбца таблицы — ПОЛ, ВОЗРАСТ и ИМЯ. Остальные N столбцов (N равно 100!) — это вопросы, где каждая строка таблицы означает ответ этого человека на этот вопрос:

SEX | AGE | NAME | Q1 | Q2 | Q3 | ... | Q100

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

SEX | AGE | NAME | <QUESTION_COLUMN>

До сих пор я создал раскрывающийся параметр (заполненный «Q1», «Q2», «Q3» и т. д.), где пользователь может выбрать вопрос, который он хочет сравнить. Я безуспешно пытался использовать значение выбранного параметра (например, «Q1») в предложении SELECT моего запроса отчета:

SELECT sex, age, name, ${QUESTION} FROM user_answers

Pentaho Report Designer не показывает никаких ошибок при этом, он просто не показывает никаких значений для столбца вопрос (остальные столбцы - пол, возраст и имя - всегда вернуть их значения)

Итак, я хотел бы, чтобы вы знали:

  1. Я могу сделать это? Я имею в виду, использовать параметры в предложении SELECT?
  2. Есть ли другой способ получить этот столбец с подстановочными знаками в соответствии с параметром?

Заранее спасибо! Бруно Гама


person Bruno Gama    schedule 01.02.2013    source источник


Ответы (2)


вы можете использовать дизайн отчета Pentaho для дизайна.

  1. Во-первых, вы должны создать параметр «ВОПРОС» в параметрах, например: SELECT question FROM user_ansewers order by XXXX
  2. вы можете использовать sql

    SELECT sex, age, name,question FROM user_answers where question= ${QUESTION}

  3. наконец, вы можете увидеть «раскрывающийся список», чтобы понять выбор

person Charels_xie    schedule 26.04.2013

Я использую SQL-сервер в качестве базы данных. Эта проблема решается так:

execute('ВЫБЕРИТЕ пол, возраст, имя, '+${QUESTION}+' as Q1 FROM user_answers')

Обратите внимание, что ${QUESTION} должен быть именем столбца user_answers. В этом примере я использовал имя параметра текстового поля QUESTION, где в качестве входных данных указано имя столбца. Вам может понадобиться другое кодирование, если входной параметр не является текстовым полем.

person MNessa    schedule 17.06.2013