Is this what you're looking for?---------------------------------------------------------------Create Old and new tablesset nocount ondeclare @tb Table (risks varchar(200))declare @newTb TAble (lrisk char(1), lPct int, mrisk char(1), mPct int, hrisk char(1), hPct int, Risks varchar(200))insert @tbSelect '<Risks><Risk pct="20">10</Risk><Risk pct="55">50</Risk><Risk pct="25">100</Risk></Risks>' union allSelect '<Risks><Risk pct="11">10</Risk><Risk pct="24">50</Risk></Risks>' union allSelect '<Risks><Risk pct="100">10</Risk><Risk pct="2">50</Risk></Risks>' union allSelect '<Risks></Risks>' union allSelect '<Risks><Risk pct="20">10</Risk><Risk pct="30">100</Risk></Risks>'---------------------------------------------------------------This assumes only 3 possible values for Risk Element (10, 50 100)--Also assumes Risk Attributes will be in range of 0-999insert @newTbSelect lrisk = 'L' ,lPct = replace(replace(subString(Risks, charindex('">10<',Risks)-3, 3),'"',''),'=','') ,mrisk = 'M' ,mPct = replace(replace(subString(Risks, charindex('">50<',Risks)-3, 3),'"',''),'=','') ,hrisk = 'H' ,hPct = replace(replace(subString(Risks, charindex('">100<',Risks)-3, 3),'"',''),'=','') ,risks = RisksFrom @tbSElect * from @newTbBe One with the OptimizerTG