Это похоже на работу для wm_concat
или stragg
, которая даст вам ваши уникальные значения без необходимости транслитерировать их во что-то.
select x.id, stragg(x.value)
from table_x x
group by x.id
И сваш комментарий вы можете гарантировать порядок в подзапросе:
select id, substr(stragg(value),1,10)
from ( select id, value
from table_x
order by id, value )
group by id
Единственная проблема заключается в том, что ваши значения не будут "красивыми", они будут объединением всех возможных значений, которые вы имеете в table_x
SQL> create table table_x ( id number, value number);
Table created.
SQL> insert into table_x values (1,5);
1 row created.
SQL> insert into table_x values (1,6);
1 row created.
SQL> insert into table_x values (2,3);
1 row created.
SQL> insert into table_x values (3,6);
1 row created.
SQL> insert into table_x values (3,5);
1 row created.
SQL> insert into table_x values (4,3);
1 row created.
SQL> insert into table_x values (5,7);
1 row created.
SQL> commit;
Commit complete.
SQL>
SQL> select id, substr(stragg(value),1,10)
2 from ( select id, value
3 from table_x
4 order by id, value )
5 group by id
6 ;
ID STRAGG(VALUE)
---------- ----------
1 5;6
2 3
3 5;6
4 3
5 7
SQL>