Q&A about the site for music historians, critics, and fans
CREATE TABLE #items ( part_number int, num int, description varchar(255) ); INSERT INTO #items (part_number, num, description) VALUES (1, 1, 'xxxxx'), (1, 2, 'yyyyy'), (1, 3, 'zzzzz'), (2, 1, 'aaaaa'), (2, 2, 'bbbbb'), (2, 3, 'ccccc'); DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT ',' + QUOTENAME(description) from #items group by description, part_number order by part_number FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = N'SELECT ' + @cols + N' from ( select num, description from #items ) x pivot ( max(num) for description in (' + @cols + N') ) p ' exec sp_executesql @query;