SQL SERVER 2012
DECLARE @TABLE TABLE
    (
    BASENAME varchar(150),
    DESCRIPTIONS varchar(150)
    )
    insert @TABLE
    SELECT 'Accessory', 'Color' UNION ALL
    SELECT 'Accessory', 'Compatibility'UNION ALL
    SELECT 'Accessory', 'Finish'UNION ALL
    SELECT 'Accessory', 'Material'UNION ALL
    SELECT 'Accessory', 'Mount Type'UNION ALL
    SELECT 'Adapter',   'Adjustable'UNION ALL
    SELECT 'Adapter',   'Ampere'UNION ALL
    SELECT 'Adapter',   'Compatibility'UNION ALL
    SELECT 'Adapter',   'MountType'UNION ALL
    SELECT 'Adapter',   'Operation Type'UNION ALL
    SELECT 'Adapter',   'Vertical Lift'UNION ALL
    SELECT 'Adapter',   'Drawbar'UNION ALL
    SELECT 'Adapter',   'Switch'
OUTPUT
BASENAME    DESC1   DESC2   DESC3   DESC4   DESC5   DESC6   DESC7   DESC8
Accessory   Color   Compatibility   Material    Mount Type  NULL    NULL    NULL    NULL
Adapter Adjustable  Ampere  Compatibility   MountType   Operation Type  Vertical Lift   Drawbar Switch
The max number of DESC would be DESC 50 for one of the BASENAME. STUFF not work in this scenario, as it is creating error as
Error: The number of elements in the select list exceeds the maximum allowed number of 4096 elements.
Code i tried:
DECLARE @Cols NVARCHAR(MAX);
DECLARE @SQL NVARCHAR(MAX);
DECLARE @Sel NVARCHAR(MAX);
DECLARE @GENERIC NVARCHAR(MAX)
SET @Cols = STUFF((SELECT distinct ',' + QUOTENAME([Description]) 
            FROM STAGING_TEMP 
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'');
SET @Sel = STUFF((SELECT distinct ',' + QUOTENAME([Description]) + 
' AS DESC'+CAST(row_number () over (partition by [Generic Name] order by [description]) as varchar(250))
            FROM STAGING_TEMP 
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,''); 
SET @SQL = N'
SELECT DISTINCT [Generic Name], '+ @Sel+N'
FROM STAGING_TEMP
    pivot
    (
      MAX(Description) For Description IN ('+ @Cols + N')
    ) P';
EXECUTE( @SQL);
is there any other way to achieve the desired output.
 
     
    