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

Crear consulta agrupando

Estas en el tema de Crear consulta agrupando en el foro de SQL Server en Foros del Web. Como estan tengo una pregunta..... Tengo una consulta que me arroja los siguiente resultados.... Nombre----------- Curso------------- Tipo Juan Perez------ Matematica -------Logica Juan Perez-------Ingles--------------Idioma Juan Perez-------Fisica---------------Logica ...
  #1 (permalink)  
Antiguo 02/11/2010, 00:41
 
Fecha de Ingreso: octubre-2010
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
Pregunta Crear consulta agrupando

Como estan tengo una pregunta.....

Tengo una consulta que me arroja los siguiente resultados....


Nombre----------- Curso------------- Tipo
Juan Perez------ Matematica -------Logica
Juan Perez-------Ingles--------------Idioma
Juan Perez-------Fisica---------------Logica
Carlos Paz-------Matematica-------Logica
Carlos Paz--------Quimica------------Logica
Carlos Paz--------Lenguaje----------Idioma

nada mas es un ejemplo

lo que necesito es que me salga lo siguiente

Nombre----------- Curso------------- Tipo
Juan Perez-------- Matematica, Fisica---- Logica
Juan Perez----------Ingles---------------Idioma
Carlos Paz--------Matematica, Quimica--Logica
Carlos Paz-------- Lenguaje-------------- Idioma

Que agrupe los campos pero por su tipo y que los cursos en este caso salga pero con comas

Es muy complicado???

Gracias por la ayuda
  #2 (permalink)  
Antiguo 02/11/2010, 23:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Crear consulta agrupando

Tendrias que hacer un procedimiento que guarde los valores en una tabla temporal y que vayas recorriendo estos valores...manejas SQL?

Saludos!
  #3 (permalink)  
Antiguo 03/11/2010, 09:07
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Crear consulta agrupando

Buenos días puppe, te dejo una función que te puede servir, lo que hace justamente es concatenar los resultados en un solo renglón, sólo tendrías que tener cuidado en que los tipos de datos de los parámetros correspondan a los de tu tabla y por supuesto cambiar el nombre de tu tabla

Código SQL:
Ver original
  1. CREATE FUNCTION dbo.concatena (@nombre VARCHAR(50), @tipo VARCHAR(50))
  2. RETURNS VARCHAR(500) AS
  3. BEGIN
  4. DECLARE @regreso VARCHAR(500)
  5. SET @regreso = ''
  6. SELECT @regreso = @regreso + ltrim(rtrim(isnull(curso,'')))+','
  7. FROM (SELECT curso FROM TU_TABLA WHERE nombre = @nombre AND tipo = @tipo) t1
  8. RETURN SUBSTRING(@regreso, 1, len(@regreso)-1)
  9. END

Para invocar la función sólo tendrías que hacer algo como esto:

select dbo.concatena('Juan Perez', 'Logica')

el resultado debería ser este:

Código:
Matematica,Fisica
Sólo te faltaría armar la consulta para que te agrupe por nombre y tipo y enviar los parámetros de manera dinámica. Trata de sacar la consulta y si tienes problemas lo comentas en el foro.

Saludos
Leo.

Etiquetas: agrupar, comas, consulta, sql
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 12:18.