Q&A about the site for music historians, critics, and fans
CREATE TABLE #items ( part_number int, number int, description varchar(255) ); INSERT INTO #items (part_number, number, 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(part_number) from #items group by part_number order by part_number FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = N'SELECT ' + @cols + N' from ( select description, number from #items ) x pivot ( max(description) for number in (' + @cols + N') ) p ' exec sp_executesql @query;