0

我有一个正在开发的 Pentaho CDE 项目,我想显示一个图表,它取决于几个参数(如月份、年份、精确日期、国家等)。但是当我想在我的查询中“添加”另一个参数时,它不再起作用了......所以我确定我做错了什么但是什么?请查看参数月份,例如:

  • Select_months_query :(这是我的复选框)

SELECT "All" AS MONTH(TransactionDate) UNION SELECT DISTINCT MONTH(TransactionDate) FROM order ORDER BY MONTH(TransactionDate);

  • Select_barchart_query :(这是我的图表,不要介意其他表格)

SELECT pginit.Family, SUM(order.AmountEUR) AS SALES FROM pginit INNER JOIN statg ON pginit.PG = statg.PGInit INNER JOIN order ON statg.StatGroup = order.StatGroup WHERE (MONTH(order.TransactionDate) IN (${month}) OR "All" IN (${month}) OR ${month} IS NULL) AND /*/* Apply the same pattern for another parameter (like year for example) *\*\ GROUP BY pginit.Family ORDER BY SALES;

(这里,${month} 是 CDE 中的一个参数)

关于如何做的任何想法?我在那里读到了一些说要使用 CASE 子句的东西……但是怎么做呢? http://forums.pentaho.com/showthread.php?136969-Parametrized-SQL-clause-in-CDE&highlight=dynamic

谢谢您的帮助 !

4

1 回答 1

0

尝试简化该查询,直到它运行并返回某些内容并从那里开始工作。

以下是一些我认为可能的原因的事情:

  1. ${parameter}如果表达式是字符串,我认为您需要在表达式周围加上单引号;
  2. "All"应该是'All'(单引号而不是双引号);
  3. 避免多行注释。我不认为您可以在 CDE SQL 查询中使用多行注释,尽管单行注释通常有效。
  4. 注意多值参数;它们作为数组传递,CDA 将其转换为逗号分隔的列表。尝试使用单值参数,使用 = 而不是 IN。
于 2015-07-03T13:55:07.357 回答