我正在使用正则表达式来串联唯一来源。我的问题是来源正在合并:
即。来源[经理,令,令,令人满意] [/ p>
需要输出[manager,ream]
输出接收[manageream,ream]
SELECT regexp_replace( listagg(c.source, ',')
within group(order by c.person_no) ,
'([^,]+)(,\1)+', '\1') source
FROM table c
如何修复上述代码以获取所需输出?
答案 0 :(得分:1)
如果我了解您的需要,您可能只需要DISTINCT
:
SQL> create table test(source) as (
2 select 'manager' from dual union all
3 select 'ream' from dual union all
4 select 'ream' from dual union all
5 select 'ream' from dual
6 );
Table created.
SQL> select listagg(source, ',') within group (order by 1)
2 from (
3 select distinct source
4 from test
5 );
LISTAGG(SOURCE,',')WITHINGROUP(ORDERBY1)
----------------------------------------------------------------------------
manager,ream
SQL>
内部查询仅用于获取不同的值,而外部查询用于连接;你可以用不同的方式重写它,我相信这是最具可读性的。