Пример данных
IF OBJECT_ID('tempdb..#t') iS NOT NULL
DROP TABLE #t
;With cte(ID, Label,[Text])
AS
(
SELECT 10,'Lead Source','Internet' UNION ALL
SELECT 10,'Display' ,'Washington' UNION ALL
SELECT 10,'Sale' ,'Brick' UNION ALL
SELECT 10,'Colour' ,'Blue'
)
SELECT ID, Label,[Text]
INTO #t FROM cte
Использование динамического Sql
DECLARE @DyColumn Nvarchar(max),
@Sql Nvarchar(max)
SELECT @DyColumn=STUFF((SELECT DISTINCT ', '+QUOTENAME(Label) FROM #t ORDER BY 1 desc FOR XML PATH ('')),1,1,'')
SET @Sql='
SELECT ID,'+@DyColumn+' FRom
(
SELECT * FROM #t
)AS SRC
PIVOT
(
MAX([Text]) FOR Label IN('+@DyColumn+')
)AS Pvt1
'
PRINT @Sql
EXEC(@Sql)
Результат
ID Sale LeadSource Display Colour
------------------------------------------
10 Brick Internet Washington Blue