Оператор SQL не работает с несколькими параметрами Pentaho CDE - PullRequest
0 голосов
/ 10 октября 2018

У меня вопрос: у меня есть таблица с простым селектором, который отфильтровал таблицу по пользователю.в данный момент я хочу, чтобы селектор был множественным, чтобы отфильтровать данные по нескольким пользователям.по умолчанию я ставлю пользователя «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}

1 Ответ

0 голосов
/ 10 октября 2018

Поскольку у меня нет pentaho CDE, я не уверен, почему ваше выражение case не работает - оно выглядит хорошо.Я думаю, что это может иметь отношение к тому, как pentaho обрабатывает параметры.Я бы предложил написать вашу логику по-другому, например:

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

Это может помочь, если проблема заключается только в том, как pentaho расширяет многозначные параметры.Но если проблема в том, что ему не нравится иметь именованный параметр более одного раза в запросе ... это хитрее, я понятия не имею.

...