Доброе утро. Мой вопрос в том, что я создаю приборную панель в pentaho. Не знаю, нужно ли мне решать проблему с помощью pentaho или sql. Чтобы иметь возможность быть, я предпочитаю sql. У меня есть ряд строк, которые я показываю и использую для подсчета различных сумм. Я бы не хотел показывать повторяющиеся строки. Sql следующий:

    SELECT p.pname                                                              AS project, 
       t.pname                                                              AS type, 
       c.cname                                                              AS component, 
       Sum(w.timeworked / 3600) OVER (partition BY p.pname)                 AS suma_proyecto, 
       Sum(w.timeworked / 3600) OVER (partition BY p.pname,t.pname)         AS suma_proyecto_tipo,
       Sum(w.timeworked / 3600) OVER (partition BY c.cname,t.pname,p.pname) AS sum_by_all, 
       Sum(w.timeworked / 3600) OVER (partition BY c.cname)                 AS sum_by_component
FROM   jira.jiraissue j, 
       jira.worklog w, 
       jira.project p, 
       jira.issuetype t, 
       jira.component c, 
       jira.nodeassociation na 
WHERE  w.issueid=j.id 
AND    j.project=p.id 
AND    na.source_node_id = j.id 
AND    na.sink_node_entity = 'Component' 
AND    na.source_node_entity = 'Issue' 
AND    na.sink_node_id=c.id 
AND    t.id=j.issuetype 
AND    w.author=( 
       CASE 
              WHEN ${Autor} = ' Todos' THEN author 
              ELSE ${Autor} 
       END) 
AND    p.pname= ( 
       CASE 
              WHEN ${Proyecto}= ' Todos' THEN p.pname 
              ELSE ${Proyecto} 
       END) 
AND    t.pname=( 
       CASE 
              WHEN ${Tipo}= ' Todos' THEN t.pname 
              ELSE ${tipo} 
       END) 
AND    c.cname=( 
       CASE 
              WHEN ${Componente}= ' Todos' THEN cname 
              ELSE ${Componente} 
       END) 
AND    to_char(w.startdate,'yyyy-mm-dd') >=${FromDate} 
AND    to_char(w.startdate,'yyyy-mm-dd') <=${ToDate}

enter image description here

0
ilanas 5 Окт 2018 в 14:48

1 ответ

Лучший ответ

В SQL для этой цели можно использовать ключевое слово DISTINCT.

 SELECT DISTINCT p.pname                                                              AS project, 
   t.pname                                                              AS type, 
   c.cname                                                              AS component, 
   Sum(w.timeworked / 3600) OVER (partition BY p.pname)                 AS suma_proyecto, 
   Sum(w.timeworked / 3600) OVER (partition BY p.pname,t.pname)         AS suma_proyecto_tipo,
   Sum(w.timeworked / 3600) OVER (partition BY c.cname,t.pname,p.pname) AS sum_by_all, 
   Sum(w.timeworked / 3600) OVER (partition BY c.cname)                 AS sum_by_component
FROM   jira.jiraissue j, 
   jira.worklog w, 
   jira.project p, 
   jira.issuetype t, 
   jira.component c, 
   jira.nodeassociation na 
WHERE  w.issueid=j.id 
AND    j.project=p.id 
AND    na.source_node_id = j.id 
AND    na.sink_node_entity = 'Component' 
AND    na.source_node_entity = 'Issue' 
AND    na.sink_node_id=c.id 
AND    t.id=j.issuetype 
AND    w.author=( 
   CASE 
          WHEN ${Autor} = ' Todos' THEN author 
          ELSE ${Autor} 
   END) 
AND    p.pname= ( 
   CASE 
          WHEN ${Proyecto}= ' Todos' THEN p.pname 
          ELSE ${Proyecto} 
   END) 
AND    t.pname=( 
   CASE 
          WHEN ${Tipo}= ' Todos' THEN t.pname 
          ELSE ${tipo} 
   END) 
AND    c.cname=( 
   CASE 
          WHEN ${Componente}= ' Todos' THEN cname 
          ELSE ${Componente} 
   END) 
AND    to_char(w.startdate,'yyyy-mm-dd') >=${FromDate} 
AND    to_char(w.startdate,'yyyy-mm-dd') <=${ToDate}
0
kapil 5 Окт 2018 в 12:06