Hay ocasiones en que se necesitamos obtener el resultado de una consulta como un conjunto de valores delimitados por comas en una sola fila, en lugar de un conjunto de filas, para este menester podemos obtenerlo de dos formas distintas.
1.- Mediante un cursor:
DECLARE cursorIDs CURSOR FOR SELECT CLAVE FROM PRODUCTOS ORDER BY CLAVE DECLARE @CodigoIDs VARCHAR(8000) DECLARE @CodigoID VARCHAR(10) OPEN cursorIDs FETCH NEXT FROM cursorIDs INTO @CodigoID WHILE @@FETCH_STATUS = 0 BEGIN SET @CodigoIDs = ISNULL(@CodigoIDs + ',', '') + @CodigoID FETCH NEXT FROM cursorIDs INTO @CodigoID END CLOSE cursorIDs DEALLOCATE cursorIDs SELECT @CodigoIDs AS Codigos_Productos GO
o bien,
2.- De la siguiente forma:
DECLARE @CodigoIDs VARCHAR(8000) SELECT @CodigoIDs = ISNULL(@CodigoIDs + ',', '') + CAST (CLAVE AS VARCHAR) FROM PRODUCTOS ORDER BY CLAVE SELECT @CodigoIDs AS Codigos_Productos GO
Esta última es mas elegante, pero como dicen, en gustos se rompen géneros.
La salida debe ser algo como:
0,1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
Estos códigos estan probados en el QueryAnalizer, pero es muy sencillo pasarlo a un Stored Procedure
Esta dato fue encontrado en esta dirección, en donde pueden encontrar más información al respecto. Asi mismo, en el apartado de tips & tricks se encuentran mas trucos y tips sobre SQL, que siempre es bueno tener a la mano para cuando se necesite.
Saludos



Comentarios Recientes