LevelI LevelII LevelIII LevelIVAnalysis Letters Numbers Detail
AllLevelsAnalysis»Letters»Numbers»DetailDescription»Letters»Numbers»DetailPlanning»Letters»Symbols»Detail
With MySampleData (AllLevels)AS( SELECT 'Analysis»Letters»Numbers»Detail' UNION ALL SELECT 'Description»Letters»Numbers»Detail' UNION ALL SELECT 'Planning»Letters»Symbols»Detail' ) SELECT PARSENAME(REPLACE(AllLevels,'»','.'),4) As Level1, PARSENAME(REPLACE(AllLevels,'»','.'),3) As Level2, PARSENAME(REPLACE(AllLevels,'»','.'),2) As Level3, PARSENAME(REPLACE(AllLevels,'»','.'),1) As Level4 FROM MySampleData
declare @temp varchar(250)SET @temp = 'Analysis»Letters»Numbers»Detail'SELECT LEFT(@temp,charindex('»',@temp)-1), SUBSTRING(@temp, charindex('»',@temp)+1, charindex('»',@temp,charindex('»',@temp)+1)-charindex('»',@temp)-1)
create table Demo (vc varchar(200))goinsert into Demo (vc) values ('Analysis»Letters»Numbers»Detail')insert into Demo (vc) values ('Description»Letters»Numbers»Detail')insert into Demo (vc) values ('Planning»Letters»Symbols»Detail')
select parsename(replace(vc,'»','.'),4), parsename(replace(vc,'»','.'),3), parsename(replace(vc,'»','.'),2), parsename(replace(vc,'»','.'),1)from Demo
--Creating Table Create Table Ex1 ( Id Int Identity(1,1), AllLevels Varchar(MAX) ) --Inserting Sample Data Insert Into Ex1 Select 'Analysis»Letters»Numbers»Detail' Union ALL Select 'Description»Letters»Numbers»Detail' Union ALL Select 'Planning»Letters»Symbols»Detail' --Query for your requirement Select Id, MAX(Case When rn = 'Level1' Then df Else '' End) As Level1, MAX(Case When rn = 'Level2' Then df Else '' End) As Level2, MAX(Case When rn = 'Level3' Then df Else '' End) As Level3, MAX(Case When rn = 'Level4' Then df Else '' End) As Level4 From ( Select Id, AllLevels, a.df, 'Level' + Cast(ROW_NUMBER() Over(Partition By Id Order By Id) As Varchar) As rn From Ex1 As b Cross Apply ( SELECT SUBSTRING('»' + b.AllLevels + '»',N+1,CHARINDEX('»','»' + b.AllLevels + '»',N+1)-N-1) As df FROM dbo.Tally As a WHERE a.N < LEN('»' + b.AllLevels + '»') AND SUBSTRING('»' + b.AllLevels + '»',N,1) = '»' ) a ) As p Group By Id