Я не знаю, как удалить повторяющиеся строки в SQL Server Pentaho CDE - PullRequest
0 голосов
/ 05 октября 2018

доброе утро У меня вопрос такой, я создаю приборную панель в Пентахо.Я не знаю, должен ли я решить проблему, используя 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

1 Ответ

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

В 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}
...