sql - 我不知道如何删除sql oracle pentaho cde中的重复行
问题描述
早上好我的问题是,我正在 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}
解决方案
在 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}