0

嗨,我有一个 Oracle 查询,例如

select listagg(name,',') within group (order by name)
from table t1 
inner join table t2 on t1.id=t2.id
inner join table t3 on t1.value=t3.value

但后来我需要从另一个表 t4 中再获取 2 列,所以我加入了 t4 但是当我加入时 listagg 给出了用逗号分隔的重复值

select listagg(name,',') within group (order by name)
from table t1 
inner join table t2 on t1.id=t2.id
inner join table t3 on t1.value=t3.value
inner join table t4 on t1.id=t4.id

我想在不影响 LISTAGG 函数的情况下获取这两个新列。

4

1 回答 1

3

通过添加连接,您会在结果中得到重复的名称。假设您的联接是正确的,您可以使用 DISTINCT 来解决此问题:

select listagg(name,',') within group (order by name)
from (select distinct name
      from table t1 
      inner join table t2 on t1.id=t2.id
      inner join table t3 on t1.value=t3.value
      inner join table t4 on t1.id=t4.id
)
于 2014-04-08T16:34:29.447 回答