Unir en un solo campo los datos de varias filas
Perdona
Pero ahora lo estoy probando con datos reales, y al haber varios vehículos, siempre pone los datos de equipamiento del vehículo + los datos del resto vehículos -1.
Es porque la variable del equipamiento no se inicializa a blancos cuando cambia de vehículo, o bien por que cuando cambia de vehículo, solo la primera vez pasa de coger los datos de equipamiento.
He probado a modificar tu cursor pero no veo donde hacerlo.
Podrías repasarlo e indicarme alguna solución.
Gracias
idVEh Equipamientounido 202 equip 202, eqip522, eqp711_1, equp711_2, eqp711, español, espa_1, eqip830_3, equip830_4
522 equip 522 1, eqip522, eqp711_1, equp711_2, eqp711, español, espa_1, eqip830_3, equip830_4
711 equip711_3, eqp711_1, equp711_2, eqp711, español, espa_1, eqip830_3, equip830_4
830 esp_2, español, espa_1, eqip830_3, equip830_4
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.
Pero ahora lo estoy probando con datos reales, y al haber varios vehículos, siempre pone los datos de equipamiento del vehículo + los datos del resto vehículos -1.
Es porque la variable del equipamiento no se inicializa a blancos cuando cambia de vehículo, o bien por que cuando cambia de vehículo, solo la primera vez pasa de coger los datos de equipamiento.
He probado a modificar tu cursor pero no veo donde hacerlo.
Podrías repasarlo e indicarme alguna solución.
Gracias
idVEh Equipamientounido 202 equip 202, eqip522, eqp711_1, equp711_2, eqp711, español, espa_1, eqip830_3, equip830_4
522 equip 522 1, eqip522, eqp711_1, equp711_2, eqp711, español, espa_1, eqip830_3, equip830_4
711 equip711_3, eqp711_1, equp711_2, eqp711, español, espa_1, eqip830_3, equip830_4
830 esp_2, español, espa_1, eqip830_3, equip830_4
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.
1 Respuesta
Respuesta de brownsea
1