Se você estiver no 11.2 em vez de apenas no 11.1, você pode usar o
LISTAGG
função agregada SELECT listagg( interval, ',' )
WITHIN GROUP( ORDER BY interval )
FROM (SELECT DISTINCT range AS interval
FROM table_name
WHERE age = 62)
Se você estiver usando uma versão anterior do Oracle, poderá usar um dos outros Técnicas de agregação de strings da Oracle na página de Tim Hall. Antes de 11.2, minha preferência pessoal seria criar um definido pelo usuário função agregada para que você possa então
SELECT string_agg( interval )
FROM (SELECT DISTINCT range AS interval
FROM table_name
WHERE age = 62)
Se você não quiser criar uma função, no entanto, você pode usar o Aproximação de ROW_NUMBER e SYS_CONNECT_BY_PATH embora isso tende a ficar um pouco mais difícil de seguir
with x as (
SELECT DISTINCT range AS interval
FROM table_name
WHERE age = 62 )
select ltrim( max( sys_connect_by_path(interval, ','))
keep (dense_rank last order by curr),
',') range
from (select interval,
row_number() over (order by interval) as curr,
row_number() over (order by interval) -1 as prev
from x)
connect by prev = PRIOR curr
start with curr = 1