why are you storing data like this? Is you attempt to get output like this?SELECT MAX(CASE WHEN Col LIKE 'STUDENT%' THEN Val ELSE NULL END) AS Student,MAX(CASE WHEN Col LIKE 'ROLLN%' THEN Val ELSE NULL END) AS RollNo,MAX(CASE WHEN Col LIKE 'MARKS%' THEN Val ELSE NULL END) AS Marks,MAX(CASE WHEN Col LIKE 'CLASS%' THEN Val ELSE NULL END) AS Class,MAX(CASE WHEN Col LIKE 'END%' THEN Val ELSE NULL END) AS [End]FROM(SELECT ROW_NUMBER() OVER(PARTITION BY LEFT(Col,PATINDEX('%[0-9]%',Col)-1) ORDER BY SUBSTRING(Col,PATINDEX('%[0-9]%',Col)+1,LEN(Col))*1) AS Seq,Col,ValFROM(SELECT 'STUDENT101' AS Col,'101' AS Val UNION ALLSELECT 'ROLLN101', '101' UNION ALLSELECT 'MARKS101', '78' UNION ALLSELECT 'CLASS101', 'A1' UNION ALLSELECT 'END101', '101' UNION ALLSELECT 'UNIVERSITY', 'KK' UNION ALLSELECT 'STUDENT105', '105' UNION ALLSELECT 'ROLLN105', '105' UNION ALLSELECT 'MARKS105', '100' UNION ALLSELECT 'CLASS105', 'A1' UNION ALLSELECT 'END105', '105' UNION ALLSELECT 'XXX', 'XXX' UNION ALLSELECT 'SERIAL', '1.01')tWHERE Col LIKE '%[0-9]%')rGROUP BY Seqoutput-------------------------------------------Student RollNo Marks Class End101 101 78 A1 101105 105 100 A1 105------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/