Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Funcion para agrupar valores en un campo

Estas en el tema de Funcion para agrupar valores en un campo en el foro de Bases de Datos General en Foros del Web. Buenas estoy buscando una funcion que me permita agrupar varios valores en un campo, algo similar a concatenar concat() os explico, dada una tabla por ...
  #1 (permalink)  
Antiguo 02/09/2010, 04:55
Avatar de volmo9  
Fecha de Ingreso: enero-2010
Mensajes: 10
Antigüedad: 14 años, 10 meses
Puntos: 0
Funcion para agrupar valores en un campo

Buenas estoy buscando una funcion que me permita agrupar varios valores en un campo, algo similar a concatenar concat()

os explico, dada una tabla por ejemplo:

paciente________ sesion
-------_________-------
Victor__________13/2/10
Victor__________14/2/10
Juan___________14/2/10
Juan___________15/2/10
Juan___________21/2/10

que me resulte esto:

paciente__________sesiones
-------__________---------
Victor____________13/2/10 ; 14/2/10
Juan_____________14/2/10 ; 15/2/10 ; 21/2/10

"sesiones" pasaria a ser un texto concatenando las fechas, lo necesito hacer en una consulta mas compleja pero es para simplificarlo...
Llevo ayer y hoy buscando la solucion por internet y no encuentro la manera....
He intentado anidar un select con otro:

SELECT paciente, (select sesion from AGENDA where paciente = #### ) as "Sesiones" FROM AGENDA

pero no soy capaz de pasarle el valor de paciente al sub-select...

Es un requisito del cliente y antes de pasar a hacerlo con programacion en java me gustaria asegurarme de que no puedo hacerlo en consulta directa a BBDD... ademas sospecho que habra alguna manera delante de mis narices pero estoy bastante espeso

MUCHAS GRACIAS POR VUESTRA ATENCION

Última edición por volmo9; 02/09/2010 a las 05:05
  #2 (permalink)  
Antiguo 02/09/2010, 05:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Funcion para agrupar valores en un campo

Lo que pides es el uso de ciertas funciones que varían entre los diferentes DBMS.
¿Cuál usas tu?
¿SQL Server, Oracle, DB2, MySQL, Postgre? ¿Algún otro?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 02/09/2010, 05:21
Avatar de volmo9  
Fecha de Ingreso: enero-2010
Mensajes: 10
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Funcion para agrupar valores en un campo

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Lo que pides es el uso de ciertas funciones que varían entre los diferentes DBMS.
¿Cuál usas tu?
¿SQL Server, Oracle, DB2, MySQL, Postgre? ¿Algún otro?
Uso postgre pero si sabes hacerlo de otra manera cuentame y ya busco a partir de hay la equivalencia en postgre
  #4 (permalink)  
Antiguo 02/09/2010, 05:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Funcion para agrupar valores en un campo

Postgre carece de la función GROUP_CONCAT() de MySQL, por ejemplo, que es la que hace lo que necesitas. Pero en la web está este tutorial que muestra cómo implementar en Postgre esta misma acción:

http://s2.diffuse.it/blog/show/10-gr..._on_postgresql
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 02/09/2010, 05:52
Avatar de volmo9  
Fecha de Ingreso: enero-2010
Mensajes: 10
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Funcion para agrupar valores en un campo

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Postgre carece de la función GROUP_CONCAT() de MySQL, por ejemplo, que es la que hace lo que necesitas. Pero en la web está este tutorial que muestra cómo implementar en Postgre esta misma acción:

[url]http://s2.diffuse.it/blog/show/10-group_concat_on_postgresql[/url]
Perfecto gnzsoloyo MUCHAS GRACIAS, voy a ir viendo si puedo apañar la funcion para postgre 8 )
  #6 (permalink)  
Antiguo 02/09/2010, 08:07
Avatar de volmo9  
Fecha de Ingreso: enero-2010
Mensajes: 10
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Funcion para agrupar valores en un campo

ya lo he podido hacer, con array() como dice en el comentario del enlace que me mandaste:

select NOMBRE,
array(select FECHA from AGENDA where NOMBRE=s1.NOMBRE order by FECHA) as "fechas"
from AGENDA s

Os lo dejo aqui por si alguno le sirve

Etiquetas: agrupar, funcion, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:04.