Concatenar mismo campo de registros diferentes

pakiki
29 de Diciembre del 2005
Hola tengo que concatenar los resultados de una query, por eje obtengo 3 resultados de esta query:
select nombre from tabla
lo que quiero es obtener en un solo registro los tres resultados separados con una coma.

pakiki
29 de Diciembre del 2005
Hola se me olvidaba decir que trabajo con Oracle...

a
29 de Diciembre del 2005
SELECT A.NOMBRE, B.NOMBRE, C.NOMBRE FROM TABLA A, TABLA B, TABLA C WHERE ...

pakiki
29 de Diciembre del 2005
.... he puesto un eje pero no tienen porq ser 3 los resultados q tengo, el numero de resultados no se sabe...

pakiki
29 de Diciembre del 2005
el eje bueno seria:
select nombre
from hombre
where idnombre like \'%ablo%\'

entonces obtengo:
Pablo Ruiz
Pedro Pablo Fernandez
Pablo Luis
...........

no se sabe cuantos registros obtengo y quiero hacer una query donde obtenga los campos nombre de los registros X separados por una coma....

pakiki
29 de Diciembre del 2005
NECESITO AYUDA POR FAVOR!!!!!!!!!!!

chemian
29 de Diciembre del 2005
como no te hagas un procedimiento y guardes los valores en una variable dentro de un bucle no se como lo puedes hacer

mio
29 de Diciembre del 2005
Creo que con una select no es posible, como ha dicho chemian lo mejor es que te crees un procedure.

andrewsreid
29 de Diciembre del 2005
Aquí están unos ejemplos de lo que quieres hacer:

SQL> @concatenate
SQL> DECLARE
2 CURSOR C1 IS
3 SELECT USERNAME
4 FROM DBA_USERS
5 WHERE SUBSTR(USERNAME,1,1) = 'A'
6 ORDER BY 1;
7 FIRST BOOLEAN := TRUE;
8 USER_LIST VARCHAR2(100) := NULL;
9 BEGIN
10 FOR USERS IN C1
11 LOOP
12 IF FIRST = TRUE THEN
13 USER_LIST := USERS.USERNAME;
14 FIRST := FALSE;
15 ELSE
16 USER_LIST := USER_LIST||','||USERS.USERNAME;
17 END IF;
18 END LOOP;
19 DBMS_OUTPUT.PUT_LINE('User List: '||USER_LIST);
20 END;
21 /
User List: ANDREW

PL/SQL procedure successfully completed.

SQL> DECLARE
2 CURSOR C1 IS
3 SELECT USERNAME
4 FROM DBA_USERS
5 WHERE SUBSTR(USERNAME,1,1) IN ('A', 'D')
6 ORDER BY 1;
7 FIRST BOOLEAN := TRUE;
8 USER_LIST VARCHAR2(100) := NULL;
9 BEGIN
10 FOR USERS IN C1
11 LOOP
12 IF FIRST = TRUE THEN
13 USER_LIST := USERS.USERNAME;
14 FIRST := FALSE;
15 ELSE
16 USER_LIST := USER_LIST||','||USERS.USERNAME;
17 END IF;
18 END LOOP;
19 DBMS_OUTPUT.PUT_LINE('User List: '||USER_LIST);
20 END;
21 /
User List: ANDREW,DBSNMP,DIRSTATS

PL/SQL procedure successfully completed.

SQL> DECLARE
2 CURSOR C1 IS
3 SELECT USERNAME
4 FROM DBA_USERS
5 WHERE SUBSTR(USERNAME,1,1) IN ('A', 'D', 'S')
6 ORDER BY 1;
7 FIRST BOOLEAN := TRUE;
8 USER_LIST VARCHAR2(100) := NULL;
9 BEGIN
10 FOR USERS IN C1
11 LOOP
12 IF FIRST = TRUE THEN
13 USER_LIST := USERS.USERNAME;
14 FIRST := FALSE;
15 ELSE
16 USER_LIST := USER_LIST||','||USERS.USERNAME;
17 END IF;
18 END LOOP;
19 DBMS_OUTPUT.PUT_LINE('User List: '||USER_LIST);
20 END;
21 /
User List: ANDREW,DBSNMP,DIRSTATS,STATS,SYS,SYSTEM

PL/SQL procedure successfully completed.

SQL>

Buena suerte,

Andrew