Buenas tardes grupo:
Me encuentro con una tabla, a la que despues de haberle hecho el filtro
WHERE me retorna un par de campos, el segundo de ellos, cadena de caracteres
con valores separados por comas:
A B
1 '1, 5, 9'
3 '8, 10'
Quisiera una consulta que me desdoblara esa lista de enteros y me hiciera un
cross join con el campo A para retornar algo asi como:
A C
1 1
1 5
1 9
3 8
3 10
Me he creado una función que retorna una tabla de enteros a partir de una
lista de enteros, pero no consigo ver la manera de combinar esta funcion con
lo que finalmente necesito.
CREATE FUNCTION [dbo].[SelectFromInt] (@Cadena varchar(128)) returns @Tabla
TABLE (Value int)
AS
BEGIN
DECLARE @index1 int,
@index2 int
SET @index1 = 1
SET @Cadena = ',' + RTRIM(@Cadena)
WHILE (@index1 <> 0)
BEGIN
SET @index1 = CHARINDEX(',', @Cadena)
SET @index2 = CHARINDEX(',', @Cadena, @index1+1)
IF @index2 = 0 SET @Index2 = LEN(@Cadena)+1
IF (@index1 <> 0) INSERT @tabla SELECT CAST(SUBSTRING(@Cadena, @index1+1
,@index2-@index1-1) as int)
SET @Cadena = LTRIM(SUBSTRING(@Cadena, @index2, LEN(@Cadena)))
END
RETURN
END
¿Puede alguien echarme una mano? Puede ser que la funcion cuyo código
adjunto no sea necesaria despues de todo.
Muchas gracias de antemano.
J.A. García Barceló
http://jagbarcelo.blogspot.com
Leer las respuestas