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
|
--premier cas :
pour les adresses eliminations existantes
update adr_elim
set adr_elim.adr_lig1 = case
when adr_elim.adr_lig1 in(null,'')
then ent.ent_raisoc
else adr_elim.adr_lig1
end,
adr_elim.adr_lig2 = adr.adr_lig1,
adr_elim.adr_lig3 = adr.adr_lig2,
adr_elim.adr_cpos = adr.adr_cpos,
adr_elim.adr_ville = adr.adr_ville
from adresse adr_elim
inner join entreprise ent on ent.id_adresse_elimination = adr_elim.id_adresse
inner join adresse adr on ent.id_adresse = adr.id_adresse
--Deuxieme cas : dans le cas du insert
--pour chaque premiere ligne ou l'eadresse elimination est null
while exists(select top 1 id_entreprise from entreprise where id_adresse_elimination is null)
begin
insert into adresse
(adr_elim.adr_lig1, adr_elim.adr_lig2,
adr_elim.adr_lig3, adr_elim.adr_cpos, adr_elim.adr_ville)
select
ent.ent_raisoc,
adr.adr_lig1,
adr.adr_lig2,
adr.adr_cpos,
adr.adr_ville
from adresse adr
join (select top 1 * from entreprise where id_adresse_elimination is null) ent on ent.id_adresse = adr.id_adresse
--je mets à jour cette id
update entreprise
set id_adresse_elimination = (select top 1 id_adresse from adresse order by id_adresse desc)
where id_entreprise = (select top 1 id_entreprise from entreprise where id_adresse_elimination is null)
end |
Partager