with x as (
select 1 as i, 'A' as j from dual union all select 1, 'A' from dual union all select 1, 'A' from dual
union all
select 2, 'D' from dual union all select 2, 'D' from dual union all select 2, 'E' from dual
union all
select 3, 'G' from dual union all select 3, 'H' from dual union all select 3, 'H' from dual
)
select x.i,
listagg(distinct x.j, ', ') within group (order by x.j) as X_LIST,
json_arrayagg(distinct x.j order by x.j) as X_JSON
from x
group by x.i
| I | X_LIST | X_JSON | 1 | A | ["A","A","A"] | 2 | D, E | ["D","D","E"] | 3 | G, H | ["G","H","H"] |
|---|