SQL case语句不适用于多参数pentaho cde

问题描述 投票:0回答:1

我有一个问题:我有一个带有简单选择器的表,用户可以对表进行过滤。此时我希望选择器为多个,以便由多个用户过滤数据。默认情况下,我把用户'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'。

如果我输入以下代码,用户可以使用“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}
sql oracle pentaho pentaho-cde
1个回答
0
投票

由于我没有pentaho CDE,我不确定为什么你的案例表达不起作用 - 它看起来很好。我认为这可能与pentaho处理参数的方式有关。我建议用不同的方式编写逻辑,例如:

AND (w.author in (${Autor})
     OR ${Autor} = ' Todos')

如果问题只是pentaho扩展多值参数的方式,这可能会有所帮助。但是,如果问题是它不喜欢在查询中多次使用命名参数......这更棘手,我不知道。

© www.soinside.com 2019 - 2024. All rights reserved.