Dynamic Pivot Not displaying right output

Viewed 80

I have this table:

Year Month| User| Player  | Manager
1996-06   | 1256|  2      |   1
1997-07   | 1243|  5      |   2

and was trying to pivot it so it returns:

       | 1997-06|1996-07
User   | 1256   | 1243
Player | 2      |   5
Manager| 1      |   2

however I'm not to sure why my script below is returning something different:

DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX);
SET @columns = N'';
SELECT @columns += N', p.' + QUOTENAME([User]) 
  FROM (SELECT p.[User] FROM dbo.practise AS p
  GROUP BY p.[User]) AS x;
SET @sql = N'
SELECT ' + STUFF(@columns, 1, 2, '') + '
FROM
(
  SELECT [year month], [User]
   FROM dbo.practise AS p

) AS j
PIVOT
(
  SUM([User]) FOR [year month] IN ('
  + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '')
  + ')
) AS p;';
PRINT @sql;
EXEC sp_executesql @sql;

It returns:

    1256|1243
1   Null|Null

Not sure what I'm doing wrong :/

1 Answers
Related