SQL - Agrupado de datos?

 
Vista:

Agrupado de datos?

Publicado por Daniel (73 intervenciones) el 21/07/2002 03:16:36
Hola niños...

Tengo un pequeño problemita y quiero ver si entre todos podemos resolverlo...
Miren, resulta que necesito hacer una consulta donde yo obtenga, un dato especifico concatenado. Por ejemplo:

Tengo una tabla Maestra (A) y una de Detalle (B)
En la tabla A tengo mi llave maestra Id_A
Y en mi tabla Detalle B tengo Id_A, Id_B, Dato(char 8)

Tengo en mi tabla B:
Id_A Dato
1 AB
1 CD
1 EF
2 GH
2 IJ

Entonces quiero obtener lo siguiente

Id_A Dato_Agrupado
1 AB,CD,EF
2 GH,IJ

Como lo puedo hacer??? Existe alguna instruccion o funcion en SQL que em permita hacer ese agrupamiento de datos tipo char???
Estoy utilizando SQL server 2000

Gracias de antemano, espero haberme sabido explicar...

Gracias niños...

Daniel_26
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Agrupado de datos?

Publicado por Islas, Isaías (5072 intervenciones) el 22/07/2002 18:05:30
Hola Daniel

Pruebe esta estructura y digame si funciona:

CREATE STORE PROCEDURE pr_Concatenacion
AS

DECLARE @MyCursor as CURSOR,
@MyLLave as INT, -- SUPONIENDO QUE SIEMPRE SEAN NUMEROS CORTOS
@MyResto as VARCHAR,
@MyLLaveControl as INT -- Para control de salto

SET @MyLLaveControl = 0

CREATE #MyTablaTemp(MyColumna NVARCHAR(100))

SET @MyCursor = CURSOR FOR SELECT SUBSTRING(Id_A, 1, 1) as Llave, SUBSTRING(Id_A, 2, len(Id_A) as Resto)
FROM MyTablaB
ORDER BY 1

-- Abro mi cursor
OPEN @MyCursor
IF @@cursor_rows <> 0
BEGIN
FETCH NEXT FROM @MyCursor into @MyLLave, @MyResto
WHILE @@Fetch_Status = 0
BEGIN
IF @MyLLaveControl <> @MyLLave
BEGIN
INSERT INTO #MyTablaTemp VALUES(@MyLLave, @MyResto)
SET @MyLLaveControl = @MyLLave
END
ELSE
UPDATE #MyTablaTemp SET MyResto = MyResto+','+@MyResto WHERE MyLLave = @MyLLaveControl
FETCH NEXT FROM @MyCursor into @MyLLave, @MyResto
CONTINUE
END
END
SELECT * FROM #MyTablaTemp

-----------------------------------------------------------------------------------------------
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Agrupado de datos?

Publicado por Islas, Isaías (5072 intervenciones) el 22/07/2002 18:07:25
Un favor, modifique este update, agregando una N (mayuscula), gracias.

UPDATE #MyTablaTemp SET MyResto = MyResto+N','+@MyResto WHERE MyLLave = @MyLLaveControl
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar