Oracle 10g: Pivot Query

How to create a pivot query:

with 
t as (
select 1 GRP_NR, 'A' val from dual union all
select 1 ,'B' val from dual union all
select 2 ,'A' val from dual union all
select 2 ,'B' val from dual union all
select 2 ,'C' val from dual union all
select 3 ,'A' val from dual union all
select 3 ,'B' val from dual union all
select 3 ,'C' val from dual )
select GRP_NR, substr( string, 2 ) as string
from t
model
return updated rows
partition by ( GRP_NR )
dimension by ( row_number() over (partition by GRP_NR ORDER BY val asc) as position )
measures ( cast( val as varchar2(1000) ) as string )
rules
upsert
iterate(1000 )
until ( presentv(string[iteration_number+2],1,0) = 0 )
( string[0] = string[0] || ',' || string[iteration_number+1] )
order by GRP_NR ;

Result:

1 A,B

2 A,B,C

3 A,B,C

Leave a Reply