我有表HumanNames
输入是
|HumanName |
|------------- |
|Kamil |
|Azer |
|John |
|Elmir |
|Kamal |
|Elmar |
|Orxan |
|Elnar |
Run Code Online (Sandbox Code Playgroud)
我需要写查询,它会给出与其他名称相同的结果名称.期望的输出是
|NamesWhichLikes |
|------------- |
|Kamil,Kamal |
|Elmir,Elmar,Elnar|
| |
Run Code Online (Sandbox Code Playgroud)
试试这个使用listagg和group by对soundex命名的:
with your_table (HumanName) as (
select 'Kamil' from dual union all
select 'Azer' from dual union all
select 'John' from dual union all
select 'Elmir' from dual union all
select 'Kamal' from dual union all
select 'Elmar' from dual union all
select 'Orxan' from dual union all
select 'Elnar' from dual
)
------ Test data setup ends here ------
select
listagg(humanname,',') within group (order by humanname) nameswhichlikes
from your_table
group by soundex(humanname)
having count(*) > 1;
Run Code Online (Sandbox Code Playgroud)
生产:
+---------------------------+
| NAMESWHICHLIKES |
+---------------------------+
| Elmar,Elmir,Elnar |
+---------------------------+
| Kamal,Kamil |
+---------------------------+
Run Code Online (Sandbox Code Playgroud)
如果名称重复:
select
listagg(humanname,',') within group (order by humanname) nameswhichlikes
from (select distinct humanname from your_table)
group by soundex(humanname)
having count(*) > 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
701 次 |
| 最近记录: |