Dynamische MSSQL-Pivot-Spaltenwerte in Spaltenüberschriften

Könnte mir jemand helfen, das Folgende auf mssql zu konvertieren?

 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 sind die Header und haben mehrere 'Eigenschaften'

Ich möchte es konvertieren zu:

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

Wobei NAME1 | NAME2 | NAME3 usw. sind jetzt die Spaltenüberschriften.

Ich vermute, dass ein Pivot und ein 'select distinct PROPERTY_NAME from MycoolTable' vorhanden sind, kann die beiden jedoch nicht zusammenfügen.

Dies ist soweit ich habe: (keine server_id) Spalte und alle Nullen überall) Klar bin ich dumm: 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)

Vielen Dank, Mike

Antworten auf die Frage(1)

Ihre Antwort auf die Frage