select menuid,menuname=case when menuname is null then ' '+menuname1 else menuname end,pmenuid from ( select menuid,menuname,menuname1=null,pmenuid from aa a1 where pmenuid=0 union select menuid,menuname=null,menuname1=menuname,pmenuid from aa a1 where pmenuid<>0 ) ssss
select menuid,menuname=case when menuname='' then ' '+menuname1 else menuname end ,pmenuid from ( select menuid,menuname=case when pmenuid=0 then menuname else '' end ,menuname1=case when pmenuid=0 then '' else menuname end,pmenuid from aa a2 ) dd
from
(
select menuid,menuname,menuname1=null,pmenuid from aa a1 where pmenuid=0
union
select menuid,menuname=null,menuname1=menuname,pmenuid from aa a1 where pmenuid<>0
) ssss
from
(
select menuid,menuname=case when pmenuid=0 then menuname else '' end ,menuname1=case when pmenuid=0 then '' else menuname end,pmenuid
from aa a2
) dd