11.1 だけでなく 11.2 を使用している場合は、LISTAGG
を使用できます。 集計関数
SELECT listagg( interval, ',' )
WITHIN GROUP( ORDER BY interval )
FROM (SELECT DISTINCT range AS interval
FROM table_name
WHERE age = 62)
以前のバージョンの Oracle を使用している場合は、他の のいずれかを使用できます。 Oracle 文字列集計手法 ティム・ホールのページ。 11.2 より前は、ユーザー定義の集約関数 できるように
SELECT string_agg( interval )
FROM (SELECT DISTINCT range AS interval
FROM table_name
WHERE age = 62)
ただし、関数を作成したくない場合は、 ROW_NUMBER および SYS_CONNECT_BY_PATH アプローチ ただし、それに従うのは少し難しくなる傾向があります
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