¿Cómo concatenar registros de una tabla?

Me gustaría que me ayudaras a resolver este problema, se trata de una tabla con múltiples registros, los cuales tienen asignado un mismo numero de control, pero cada uno de ellos tiene diferente descripción, y me gustaría unir todas esas descripciones en un solo registro, voy a poner la tabla como ejemplo, por si no me di bien entender,
Tabla A
ID            DESCRIP
---------------------------
10           ROSA
10           BLANCO
10           AZUL
20           ROJO
20           AZUL
30           AZUL 
30           MORADO 
La tabla es la anterior, y me gustaría generar una consulta que me muestre en un solo registro resumido cada ID, con su descripción concatenada, ejemplo:
RESULTADO
ID          DESCRIPCIÓN 
-------------------------------------------------
10         ROSA, BLANCO, AZUL
20         ROJO, AZUL
30         AZUL, MORADO
.
.
.
Y así sucesivamente, lo estoy intentando hacer con sub-querys pero me hace todas las combinaciones, y eso no quiero, me gustaría que fuera como el ejemplo de arriba

1 respuesta

Respuesta
1
La Solución es crearse una función:
CREATE OR REPLACE FUNCTION CORIS.junta ( codigo IN number)
RETURN VARCHAR2 IS
    todo varchar2(2000); i number:= 0;
begin
FOR r IN (select descripcion from a where id = codigo) LOOP
  i := i + 1;
  if i > 1 then
    todo := todo||',';
  end if;
  todo := todo||r.descripcion;
END LOOP ;
return todo;
end;
Y despues haces la select aplicando la funcion
select id, junta (id) from a group by id order by id

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas