我有一个问题:我有一个带有简单选择器的表,该选择器按用户过滤了该表。目前,我希望选择器为多个,以便由多个用户过滤数据。默认情况下,我将用户“ Todos”(全部用英语表示)放置在用户“ Todos”的情况下,我选择表格中的列以选择所有用户。否则,我将选择所选的用户。
SELECT DISTINCT
p.pname AS project,
SUM(w.timeworked / 3600) OVER () AS sum_all_hours,
SUM(w.timeworked / 3600) OVER (PARTITION BY p.pname) AS suma_proyecto
FROM
jira.jiraissue j,
jira.worklog w,
jira.project p
WHERE
w.issueid = j.id
AND j.project = p.id
AND w.author IN (${Autor})
AND p.pname IN ('Area Económica',
'Proyectos Clinicos',
'Proyectos. Con sus componentes',
'Despliege y Soporte')
AND TO_CHAR(w.startdate,'yyyy-mm-dd') >= ${FromDate}
AND TO_CHAR(w.startdate,'yyyy-mm-dd') <= ${ToDate}
此代码可以正常工作,但省略了用户“ Todos”。
如果我输入以下代码,则该用户使用的是“待办事项”,并且如果我选择了一个用户,但选择了多个用户则没有任何显示。
SELECT DISTINCT p.pname AS project,
Sum(w.timeworked / 3600) OVER () AS sum_all_hours,
Sum(w.timeworked / 3600) OVER (partition BY p.pname) AS suma_proyecto
FROM jira.jiraissue j,
jira.worklog w,
jira.project p
WHERE w.issueid=j.id
AND j.project=p.id
AND w.author in(
CASE
WHEN ${Autor} = ' Todos' THEN author
else ${Autor}
END)
AND p.pname IN ('Area Económica',
'Proyectos Clinicos',
'Proyectos. Con sus componentes',
'Despliege y Soporte')
AND to_char(w.startdate,'yyyy-mm-dd') >=${FromDate}
AND to_char(w.startdate,'yyyy-mm-dd') <=${ToDate}
答案 0 :(得分:0)
由于我没有pentaho CDE,所以我不确定为什么您的case表达式不起作用-看起来不错。我认为这可能与pentaho处理参数的方式有关。我建议以其他方式编写您的逻辑,例如:
AND (w.author in (${Autor})
OR ${Autor} = ' Todos')
如果问题仅是pentaho扩展多值参数的方式,则可能会有所帮助。但是,如果问题在于,它不希望在查询中多次拥有一个命名参数,那会比较棘手,我不知道。