24/07/2007, 09:41
|
| | 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 |