Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/07/2007, 09:41
juantiva
 
Fecha de Ingreso: junio-2006
Mensajes: 109
Antigüedad: 18 años, 6 meses
Puntos: 2
Re: Duda en consulta de agrupación

Código:
SET NOCOUNT ON
DECLARE @Respuestas TABLE
(ID int, PUNTO int, RESPUESTA varchar(10))

INSERT INTO @Respuestas(ID, PUNTO, RESPUESTA)
VALUES(1, 22, 'casa')
INSERT INTO @Respuestas(ID, PUNTO, RESPUESTA)
VALUES(2, 24, 'coche')
INSERT INTO @Respuestas(ID, PUNTO, RESPUESTA)
VALUES(3, 56, 'casa')
INSERT INTO @Respuestas(ID, PUNTO, RESPUESTA)
VALUES(4, 99, 'casa')
INSERT INTO @Respuestas(ID, PUNTO, RESPUESTA)
VALUES(5, 12, 'libro')
INSERT INTO @Respuestas(ID, PUNTO, RESPUESTA)
VALUES(6, 66, 'papel')
INSERT INTO @Respuestas(ID, PUNTO, RESPUESTA)
VALUES(5, 11, 'libro')

DECLARE @TablaPorRespuesta TABLE
(RowId int identity(1,1), RESPUESTA varchar(10), Puntos varchar(50))

INSERT INTO @TablaPorRespuesta(RESPUESTA, Puntos)
SELECT RESPUESTA,''
FROM @Respuestas
GROUP BY RESPUESTA

DECLARE @RowId int, @MaxRowId int, @Puntos varchar(50)

SET @RowId = 1
SELECT @MaxRowId = Count(1)
FROM @TablaPorRespuesta

WHILE @RowId <= @MaxRowId
BEGIN
	SET @Puntos = ''
	SELECT @Puntos = @Puntos + convert(varchar,Punto) + '--'
	FROM @TablaPorRespuesta TR
	INNER JOIN @Respuestas R
	ON TR.Respuesta = R.Respuesta
	WHERE @RowId = RowId
	Order by Punto

	UPDATE @TablaPorRespuesta SET Puntos = LEFT(@Puntos,LEN(@Puntos)-2)
	WHERE @RowId = RowId
	
	SET @RowId = @RowId + 1
END

SELECT Respuesta + ',' + Puntos AS Resultado
FROM @TablaPorRespuesta
Order by Respuesta

SET NOCOUNT OFF
Suerte