Динамические сводные столбцы MSSQL для заголовка столбца

Может ли кто-нибудь помочь мне преобразовать следующее на MSSQL, пожалуйста?

 ID   |  PROPERTY_NAME  | PROPERTY_VALUE
 1    |      name1      |     value
 1    |      name2      |     value
 1    |      name3      |     value
 2    |      name4      |     value
 2    |      name2      |     value
 3    |      name6      |     value
..

PROPERTY_NAME & PROPERTY_VALUE - заголовки, идентификатор которых имеет несколько «свойств»

Я хочу преобразовать это в:

ID  |  NAME1  | NAME2  | NAME3  | NAME4  | NAME5  | NAME6  | nameETC...
1   |  value  | value  | value  |        |        |        | valueETC...
2   |         | value  |        | value  |        |        | valueETC...
3   |         |        |        |        |        | value  | valueETC...
..

Где ИМЯ1 | ИМЯ2, | NAME3 и т. Д. Теперь являются заголовками столбцов.

Я предполагаю, что сводная таблица и «выберите отдельное имя PROPERTY_NAME из MycoolTable», но, похоже, не могут соединить их вместе.

Это насколько я получил: (нет server_id) столбец и все нули везде) Очевидно, я тупой: D

DECLARE @cols AS NVARCHAR(MAX), @query  AS NVARCHAR(MAX);

select @cols = STUFF((SELECT distinct 
           ',' + QUOTENAME(PROPERTY_NAME)
               FROM [BSARA_DW_DB].[dbo].[SERVER_PROPERTY]
               FOR XML PATH(''), TYPE
               ).value('.', 'NVARCHAR(MAX)') 
               ,1,1,'');

SET @query = 'SELECT  '+ @cols + ' from 
         (
            SELECT SERVER_ID, PROPERTY_NAME, PROPERTY_CHAR_VAL
            FROM [BSARA_DW_DB].[dbo].[SERVER_PROPERTY]
        ) x
        pivot 
        (
            MAX(SERVER_ID)
            for PROPERTY_CHAR_VAL in (' + @cols + ')
        ) p ';

execute(@query)

Большое спасибо, Майк

Ответы на вопрос(1)

Ваш ответ на вопрос