Mostrando las entradas con la etiqueta renglones en líneas. Mostrar todas las entradas
Mostrando las entradas con la etiqueta renglones en líneas. Mostrar todas las entradas

miércoles, 13 de febrero de 2013

ORACLE SQL - Renglones en una sola columna

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
-----------------------------------------------------------------------------
uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez
Espero les sea de utilidad.

Translate