Solution to TSQL Beginners Challenge 19
;with cte
as
(
select id,HtmlTagNames,Convert(varchar(1000),HtmlTagNames+',') as temphtn,Convert(varchar(1000),'') as splittag
from @tblUnorderedHTMLTags
union all
select ut.id,ut.HtmlTagNames,temphtn=Convert(varchar(1000),substring(temphtn,CHARINDEX(',',c.temphtn,1)+1,LEN(temphtn))),
Convert(varchar(1000),substring(temphtn,1,case
when CHARINDEX(',',c.temphtn,1)<>0 then CHARINDEX(',',c.temphtn,1)-1
when CHARINDEX(',',c.temphtn,1)=0 then len(c.temphtn) end ))
from cte c inner join @tblUnorderedHTMLTags
ut on ut.ID=c.ID where c.temphtn<>''
),
cte2
as
(
select c.id,c.splittag,case when splittag='html' then 1
when splittag='Head' then 2
when splittag='title' then 3
when splittag='Meta' then 4
when splittag='Body' then 5
when splittag='Font' then 6 end as pos from cte c inner join @tblTagOrders tor on c.splittag=tor.Tags where c.splittag<>''
),
cte3
as
(
select id,(select '<'+ case when splittag='Title' then splittag+'>'+' '
when splittag='Meta' then splittag+'>'+' '
when splittag='Font' then splittag+'>'+''
else splittag+'> ' end from cte2 c where c.ID=cte.id order by pos for XML path(''),type).value('.','varchar(max)')+'