Динамические сводные столбцы 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)
Большое спасибо, Майк