Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > SQL Server

Respuesta
 
Herramientas Desplegado
Antiguo 24-dic-2007, 10:53   #1 (permalink)
fbaudelet ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 8
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
fbaudelet está desconectado   Responder Citando
Antiguo 24-dic-2007, 12:35   #2 (permalink)
Colaborador
iislas ha deshabilitado el karma
 
Fecha de Ingreso: julio-2007
Mensajes: 1.407
Re: Concatenar varias filas en una columna

Franck

No se comprende cual es el objetivo, me podrias dar mas datos.
iislas está desconectado   Responder Citando
Antiguo 24-dic-2007, 12:51   #3 (permalink)
fbaudelet ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 8
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
fbaudelet está desconectado   Responder Citando
Antiguo 24-dic-2007, 14:19   #4 (permalink)
Colaborador
iislas ha deshabilitado el karma
 
Fecha de Ingreso: julio-2007
Mensajes: 1.407
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
iislas está desconectado   Responder Citando
Antiguo 26-dic-2007, 10:58   #5 (permalink)
fbaudelet ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 8
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
fbaudelet está desconectado   Responder Citando
Antiguo 26-dic-2007, 12:39   #6 (permalink)
Colaborador
iislas ha deshabilitado el karma
 
Fecha de Ingreso: julio-2007
Mensajes: 1.407
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
iislas está desconectado   Responder Citando
Antiguo 26-dic-2007, 14:26   #7 (permalink)
Beakdan está en el buen camino
 
Avatar de Beakdan
 
Fecha de Ingreso: noviembre-2002
Ubicación: México, D.F.
Mensajes: 367
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)

Última edición por Beakdan; 26-dic-2007 a las 16:52.
Beakdan está desconectado   Responder Citando
Antiguo 28-dic-2007, 10:22   #8 (permalink)
fbaudelet ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 8
Re: Concatenar varias filas en una columna

MUCHAS GRACIAS A TODOS ME FUNCIONO.
Son Geniales
fbaudelet está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 12:56.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93