Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   SQL Server (http://www.forosdelweb.com/f87/)
-   -   Concatenar varias filas en una columna (http://www.forosdelweb.com/f87/concatenar-varias-filas-columna-543242/)

fbaudelet 24/12/2007 11:53

Concatenar varias filas en una columna
 
Alguien me puede ayudar para convertir la siguiente tabla:

IdHistoria NUmFila Memo
1 0 es de color
1 1 rojo
2 0 no funciona
3 0
3 1 para revisar

en esta tabla
IdHistoria Memo
1 es de color rojo
2 no funciona
3 para revisar

Gracias por la ayuda, estoy medio desesperado
Franck

iislas 24/12/2007 13:35

Re: Concatenar varias filas en una columna
 
Franck

No se comprende cual es el objetivo, me podrias dar mas datos.

fbaudelet 24/12/2007 13:51

Re: Concatenar varias filas en una columna
 
La tabla actual tiene tres columnas. la primera es el ID (IdHistoria), la segunda (NumFila) que corresponde al orden en que se debe concatenar y la tercera columna (Memo). Necesito reconstruir una tabla de solo dos columans, la primera con el "IdHistoria" y la segunda "Memo" con los datos concatenados. En resumen es Concatenar los datos de la columna Memo con el mismo IdHistoria en el orden de la columna NumFila en una nueva tabla

iislas 24/12/2007 15:19

Re: Concatenar varias filas en una columna
 
Si solamente son 2 filas (registros), estamos del otro lado, pero si no, esto no funcionara

SELECT t1.memo+t2.memo
FROM tutabla t1 join tutabla2
ON t1.IdHistoria = t2.NUmFila
WHERE t1.NUmFila < t2.NUmFila

Espero que funcione

fbaudelet 26/12/2007 11:58

Re: Concatenar varias filas en una columna
 
Gracias por la ayuda pero no me funciona.
Tengo solo una tabla que tiene tres columna y un gran numero de fila (va creciendo).
Tomando los datos de esta tabla debo crear una nueva tabla concatenando los datos de varias filas de la tercera columna (llamada Memo) en una sola fila toda vez que tengan el mismo ID (primera columna IdHistoria)
Ejemplo
ID Memo
1 a
2 b
2 c
3 d
4 e
5 f
5 g
5 h

Resultado de la nueva tabla que se crea a partir de lo anterior
ID Memo
1 a
2 bc
3 d
4 e
5 fgh

iislas 26/12/2007 13:39

Re: Concatenar varias filas en una columna
 
create table prueba (ID INT, MEMO VARCHAR(50))

INSERT INTO prueba VALUES(1, 'a')
INSERT INTO prueba VALUES(2, 'b')
INSERT INTO prueba VALUES(2, 'c')
INSERT INTO prueba VALUES(3, 'd')
INSERT INTO prueba VALUES(4, 'e')
INSERT INTO prueba VALUES(5, 'f')
INSERT INTO prueba VALUES(5, 'g')
INSERT INTO prueba VALUES(5, 'h')

alter function dbo.fn_ConcatenaMemo (@id int)
returns varchar(50)
as
begin
declare @memo varchar(50)
set @memo = ''
select @memo = @memo + memo from prueba where id = @id
return (@memo)
end

SELECT distinct ID, dbo.fn_ConcatenaMemo(id) as memo
from prueba


drop table prueba

Beakdan 26/12/2007 15:26

Re: Concatenar varias filas en una columna
 
En caso de que uses SQL Server 2000 la solución propuesta por iislas es una de las más fáciles. En caso de que uses SQL Server 2005, puedes intentar usando XML con CROSS APPLY:
Código:

SELECT  a.ID, node.text
FROM    (
          SELECT  DISTINCT id
          FROM    Memos
        ) AS a
CROSS APPLY(
          SELECT  Memo AS '*'
          FROM    Memos
          WHERE  id = a.id
          FOR XML PATH('')
        ) AS node(text)


fbaudelet 28/12/2007 11:22

Re: Concatenar varias filas en una columna
 
MUCHAS GRACIAS A TODOS ME FUNCIONO.
Son Geniales

progracvb 05/11/2010 17:45

Respuesta: Concatenar varias filas en una columna
 
yo use esta solucion que encontré en http://es.w3support.net/index.php?db=so&id=111341

declare @t table(id int, name varchar(20),somecolumn varchar(10))
insert into @t
select 1,'ABC','X' union all
select 1 ,'ABC','Y' union all
select 1,'ABC','Z' union all
select 2 ,'MNO','R' union all
select 2 ,'MNO','S'

Consulta:

select ID,Name,
stuff((select ',' + CAST(t2.SomeColumn as varchar(10))
from @t t2 where t1.id = t2.id and t1.name = t2.name
for xml path('')),1,1,'') SomeColumn
from @t t1
group by id,Name

Salida:

ID NameSomeColumn
1 ABCX,Y,Z
2 MNOR,S


La zona horaria es GMT -6. Ahora son las 07:50.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.