Unir en un solo campo los datos de varias filas

Tengo una tabla con los siguientes datos
IdVeh Equipmiento
1 abs
1 aire acondicionado
1 radiocd
2 lunas tintadas
2 antirobo
3 cierre centralizado
...
Como podría hacer en SQL server 2000
Para que me aparacieran en otra tabla con esta estructura
IdVeh UnionEquipamiento
1 abs, aire acondicionado, radiocd
2 lunas tintadas, sntirobo,
3 cierre centralizado
Respuesta
1
Por lo que comentas, debes tener primero un patrón, 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 demás 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.
Hola
El patrón seria cuando cambie el idVeh, pero no hay una cantidad de filas determinadas.
Es decir un vehículo puede tener 3 filas, otro 10, otro 1, etc..
¿Podrías indicarme aproximadamente como serian las sentencias del cursor?
Gracias por el interés tomado
Saludos
Si no sabes cual es el patrón, o si es variable igual debes identificarlo, ya sea de tu tabla origen con un campo, como un id de agrupación, de ser posible eso avisame para pasarte el código que podrías utilizar para hacer el cursor.
Gracias por el interés tomado
Efectivamente en la tabla hay un id de agrupación, que seria el idVeh.
Saludos
Ok,
Con eso ya podríamos trabajar, la estructura que te presentare es manejando quiebres, bansandonos en el id de agrupación
create table Acumulate (idVeh int, Equipments varchar(2000))--tabla que 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 solución, disculpa si hay algún tipo de error pero desde donde contesto no tengo un sql server para hacer las pruebas, pero creo que esta ok, cualquier cosa me avisas.
Una solución EXCELENTE, es justo lo que necesitaba.
Por favor si tines un rato, podrías explicarme un poco las sentencias y estructura del cursor.
Comprender la solución te lleva a preguntar menos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas