• I guess something like this: -

    DECLARE @SQL NVARCHAR(MAX);

    SELECT @SQL='SELECT '+CHAR(13)+CHAR(10)+

    STUFF((SELECT ','+CHAR(13)+CHAR(10)+'NULLIF(MAX(CASE WHEN [name] = '+CHAR(39)+[name]+CHAR(39)+

    ' THEN [length] ELSE '+CHAR(39)+CHAR(39)+' END),'+CHAR(39)+CHAR(39)+

    ') AS '+QUOTENAME([name])

    FROM (SELECT DISTINCT [name]

    FROM test

    )a([name])

    ORDER BY LEN([name]),[name]

    FOR XML PATH(''), TYPE).value('.','VARCHAR(MAX)'),1,3,'')+CHAR(13)+CHAR(10)+'FROM [dbo].[test]'+

    CHAR(13)+CHAR(10)+'GROUP BY [length];';

    EXECUTE sp_executesql @SQL;

    Which returns: -

    balk1 stof1 stof2 stof3 stof4 stof5 stof6 stof7 stof8 stof9 stof10 stof11 stof12

    ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------

    6 6 6 6 6 6 6 6 6 6 6 6 6

    7 NULL NULL NULL NULL 7 NULL NULL NULL 7 NULL NULL NULL

    9 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL


    Forever trying to learn
    My blog - http://www.cadavre.co.uk/
    For better, quicker answers on T-SQL questions, click on the following...http://www.sqlservercentral.com/articles/Best+Practices/61537/
    For better, quicker answers on SQL Server performance related questions, click on the following...http://www.sqlservercentral.com/articles/SQLServerCentral/66909/