Try:
DECLARE @Var NVARCHAR(MAX)
SET @Var ='1@2@3@4@5@6'
DECLARE @XML AS XML
DECLARE @Delimiter AS CHAR(1) ='@'
SET @XML = CAST(('<X>'+REPLACE(@Var,@Delimiter ,'</X><X>')+'</X>') AS XML)
DECLARE @temp TABLE (ID INT,name NVARCHAR(MAX))
INSERT INTO @temp
SELECT N.value('.', 'INT') AS ID, 'data' + CONVERT(Nvarchar,N.value('.', 'INT')) as name
FROM @XML.nodes('X') AS T(N)
SELECT *
FROM @temp
PIVOT
(
MAX(id)
FOR name IN ([data1],[data2],[data3],[data4],[data5],[data6])
) PIV;
Result:
data1 data2 data3 data4 data5 data6
1 2 3 4 5 6
With Dynamic SQL:
SELECT *
INTO ##temp
FROM @temp
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SELECT @cols = STUFF((SELECT ',' + QUOTENAME(name)
from @temp
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
SET @query = N'SELECT *
FROM
##temp
PIVOT
(
MAX(id)
FOR name IN (' + @cols + N')
) PIV'
EXEC(@query)
DROP TABLE ##temp