miércoles, 20 de mayo de 2015

SQL ORACLE 11, Concatenar campo cadenas de la misma columna

sql oracle 11


Concatenar campo cadenas de la misma columna

tabla
1  hola
2  hola2
3  hola3

resultado de la consulta

hola, hola2, hola3







funcion de planetacodigo.com

CREATE OR REPLACE FUNCTION rowconcat(q IN VARCHAR2) RETURN VARCHAR2 IS
  ret  VARCHAR2(4000);
  hold VARCHAR2(4000);
  cur  sys_refcursor;
BEGIN
  OPEN cur FOR q;
  LOOP
    FETCH cur INTO hold;
    EXIT WHEN cur%NOTFOUND;
    IF ret IS NULL THEN
      ret := hold;
    ELSE
      ret := ret || ',' || hold;
    END IF;
  END LOOP;
  RETURN ret;
END;


consulta para usarla

select AR_CODIGO, OBS
from ARTICULO LEFT JOIN
  ( SELECT rowconcat('select trim(ods_tx1) from ordartsi where ods_codart LIKE 13029017 and (length(ods_tx1)>1)') OBS, '13029017' ART FROM DUAL) ON ART=AR_CODIGO
WHERE AR_CODIGO='13029017';


otra consulta mas sencilla

SELECT rowconcat('select trim(ods_tx1) from ordartsi where ods_codart LIKE 13029017 and (length(ods_tx1)>1)')  FROM DUAL

No hay comentarios:

Publicar un comentario