Supongamos que tenemos esta tabla:
create table test2(nombre varchar(7));
Y con estos datos:
insert into test2 values('uno');
insert into test2 values('dos');
insert into test2 values('tres');
insert into test2 values('cuatro');
insert into test2 values('cinco');
insert into test2 values('seis');
insert into test2 values('siete');
insert into test2 values('ocho');
insert into test2 values('nueve');
insert into test2 values('diez');
commit;
Si revisamos los datos vemos:
select * from test2
NOMBRE
-------
uno
dos
tres
cuatro
cinco
seis
siete
ocho
nueve
diez
10 rows selected
Y ahora queremos obtener esos 10 renglones en uno solo y en una sola columna
WITH DATOS
AS (SELECT 1 DUMMY, NOMBRE FROM TEST2 )
SELECT LTRIM(MAX( SYS_CONNECT_BY_PATH ( NOMBRE, ',')),',') NOMBRES
FROM
(SELECT DUMMY, NOMBRE,
ROW_NUMBER() OVER ( PARTITION BY DUMMY ORDER BY DUMMY) RN
FROM DATOS )
CONNECT BY DUMMY = PRIOR DUMMY
AND RN = PRIOR RN+1
START WITH RN = 1
GROUP BY DUMMY;
Y obtenemos:
NOMBRES
-----------------------------------------------------------------------------
NOMBRES
-----------------------------------------------------------------------------
uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez
Espero les sea de utilidad.
muy buen ejemplo
ResponderBorrar