Salida delimitada por comas en una consulta en lugar de un conjunto de filas

25 07 2008

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


Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: