输出结果如下
a 1,2,3
b 4,5
如果用oracle10g 或以上的话,可以分组后直接用wmsys.wm_concat函数得到结果;
如果是mysql 可以分组后用group_concat函数来得到结果;
如果是10g以下的用等级查询,外加SYS_CONNECT_BY_PATH 函数(有点复杂);
select
t.a,
ltrim(max(sys_connect_by_path(t.b,' ')),' ') res
from
(
select e.a,e.b
row_number() over(partition by e.a order by e.a) rn,
( row_number() over(order by null)+dense_rank() over(order by e.a) ) num
from exa e
) t
start with t.rn=1 connect by prior num - 1 = num
group by t.a