有人可以幫我轉換下面的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 '屬性'
我想將其轉換爲:
ID | NAME1 | NAME2 | NAME3 | NAME4 | NAME5 | NAME6 | nameETC...
1 | value | value | value | | | | valueETC...
2 | | value | | value | | | valueETC...
3 | | | | | | value | valueETC...
..
凡NAME1 | NAME2 | NAME3等現在是列標題。
我在猜測一個數據透視表和「從MycoolTable中選擇不同的PROPERTY_NAME」,但似乎無法將兩者結合在一起。
這是據我得到:(無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)
非常感謝, 麥克
你到目前爲止嘗試過什麼?你可以在SQL小提琴http://sqlfiddle.com創建一些東西,你提到數據透視你有沒有嘗試過任何東西:http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx – Kairan
編輯與我試過 – Salakar