Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: Unir en un solo campo los datos de varias filas
Experto: brownsea
Valoración: 5
Fecha: 03/11/2009


Unir en un solo campo los datos de varias filas
Buenas tardes
Tengo una tabla con los siguientes datos
idVeh  Equipmiento
1          abs
1           aire acondicinado
1           radiocd
2           lunas tintadas
2           antirobo
3           cierre centralizado
.....
como prodria hacer en SQL server 2000
para que me aparacieran en otra tabla con esta extructura
idVeh    UnionEquipamiento
1          abs, aire acondicionado, radiocd
2          lunas tintadas, sntirobo,
3           cierre centralizado
Gracias anticipadas por vuestra colaboracion

Unir en un solo campo los datos de varias filas
Hola,
Por lo que comentas, debes tener primero un patron, es decir, saber cada cuanto quieres acumular, por ejm, quiero acumular de dos en dos en un solo registro en la estructura nueva, si tienes definido eso lo demas es sencillo.
Debes que generar un cursor, recorrer tu tabla y acumularla en una variable para luego insertarla en la nueva tabla creada.
Pero claro, el primer punto es que tengas definido tu secuencia como te puse en primera instancia.
Cualquier duda o consulta adicional me la haces saber, espero te sirva.
Saludos.
Brownsea

Unir en un solo campo los datos de varias filas
Hola
El patron seria cuando cambie el idVeh, pero no hay una cantidad de filas determinadas.
Es decir un vehiculo puede tener 3 filas, otro 10, otro 1, etc..
¿podrias indicarme aproximadamente como serian las sentencias del cursor?
Gracias por el interes tomado
Saludos
 

Unir en un solo campo los datos de varias filas
Hola,
Bueno, si no sabes cual es el patron, o si es variable igual debes identificarlo, ya sea de tu tabla origen con un campo, como un id de agrupacion, de ser posible eso avisame para pasarte el codigo q podrias utilizar para hacer el cursor.
Saludos.
Brownsea

Unir en un solo campo los datos de varias filas
Gracias por el interes tomado
Efectivamente en la tabla hay un id de agrupacion, que seria el idVeh.
Saludos

Unir en un solo campo los datos de varias filas
Ok,
Con eso ya podriamos trabajar, la estructura que te presentare es manejando quiebres, bansandonos en el id de agrupacion
create table Acumulate (idVeh int, Equipments varchar(2000))--tabla q acumulara
declare @idVeh int, @idVehTemp int, @Equipmiento varchar(50)
declare rs_var cursor for
   select   idVeh, Equipmiento from tabla order by 1
open rs_var
fetch next from rs_var into  @idVeh, @Equipmiento
set @idVehTemp= @idVeh
while @@fetch_status=0
begin
  if @idVehTemp= @idVeh
 begin
     if exists (select top 1 * from Acumulate where idVeh= @idVeh)
     begin  
                 update Acumulate set Equipmiento= Equipmiento+ ', '+ @Equipmiento
     end
     else
     begin
                 insert into Acumulate values (@idVeh, @Equipmiento)
     end
     set @idVehTemp= @idVeh
 end
 else
 begin
     insert into Acumulate values (@idVeh, @Equipmiento)
     set @idVehTemp= @idVeh
 end
fetch next from rs_var into @idVeh, @Equipmiento
end
close rs_var
deallocate rs_var

Esta seria la solucion, disculpa si hay algun tipo de error pero desde donde contesto no tengo un sql server para hacer las pruebas, pero creo q esta ok, cualquier cosa me avisas.
Saludos.
Brownsea

Pregunta finalizada. Valoración: 5
Una solucion EXCELENTE, es justo lo que necesitaba.
Por favor si tines un rato, podrias explicarme un poco las sentencias y extructura del cursor.
comprender la solucion te lleva a preguntar menos.


Volver al mensaje
http://www.todoexpertos.com/categorias/tecnologia-e-internet/bases-de-datos/sql-server/respuestas/2240450/unir-en-un-solo-campo-los-datos-de-varias-filas