Pentaho报表设计器(PRD):在select子句中使用参数

时间:2013-02-01 17:13:02

标签: sql pentaho pentaho-report-designer

在我正在使用的报告中,我需要显示数据库表的四列信息。表格的前三列是SEX,AGE和NAME。其他N列(N就像100!)是问题,表格的每一行都表示该人对该问题的回答:

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

在我的报告中,我需要显示其中的四列,其中前三列始终相同,第四列根据用户选择的选项而有所不同:

SEX | AGE | NAME | <QUESTION_COLUMN>

到目前为止,我已经创建了一个下拉参数(填充“Q1”,“Q2”,“Q3”等),用户可以选择他想要比较的问题。我试图在报表查询的SELECT子句中使用所选选项的值(例如,“Q1”),但没有成功:

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

Pentaho报表设计器没有显示任何错误,它根本没有显示问题列的任何值(其他列 - 性别,年龄和名称 - 始终返回其值)

所以,我希望你知道:

  1. 我可以这样做吗?我的意思是,在SELECT子句中使用参数?
  2. 根据参数?
  3. 还有其他方法有这个“通配符”列吗?

    提前致谢! 布鲁诺·加马

2 个答案:

答案 0 :(得分:1)

您可以使用pentaho报告设计进行设计。

  1. 首先,你必须在参数上建立参数“QUESTION” 例如:SELECT question FROM user_ansewers order by XXXX
  2. 你可以使用sql

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

  3. 最后,您可以看到“下拉”以实现选择

答案 1 :(得分:1)

我使用SQL服务器作为数据库。这个问题解决了这样的问题:

  

执行('SELECT sex,age,name,'+ $ {QUESTION} +'作为Q1 FROM user_answers')

请注意$ {QUESTION}必须是user_answers的列名。在这个例子中,我使用了一个文本框参数名称QUESTION,其中列名作为输入。如果输入参数不是文本框,则可能需要其他编码。