diegodfsd
8/27/2013 - 1:08 PM

atualizar a hierarquia

atualizar a hierarquia

BEGIN TRAN

select * from PublicoAlvo where IdPai is null

UPDATE PublicoAlvo SET HIERARQUIA = LEFT(CONVERT(VARCHAR(20), dbo.f_convert_from_base10(Id, 16)) + '00000000', 8)

-- Trocar o id abaixo pelo id pai da árvore que deseja atualizar
;with arvore(Id, IdPai, Nivel, Hierarquia)
as(select Id, IdPai, 1 Nivel, cast(Hierarquia as varchar(256))
    from PublicoAlvo
   where Id = 1962958
   
   union all
   
   select p.Id, p.IdPai, a.Nivel +1, cast(a.Hierarquia + p.Hierarquia as varchar(256))
     from PublicoAlvo p
     join arvore a
       on p.IdPai = a.Id)
       
update p
   set p.hierarquia = a.Hierarquia
  from PublicoAlvo p
  join arvore a
    on p.Id = a.Id
    
ROLLBACK