[英]MSSQL query to combine information in a new table
我的桌子:
servername: | FactName: | FactValue:
server01 | CPUcores | 2
server01 | Memory | 64GB
server01 | HDD01size | 50GB
server01 | HDD02size | 60GB
server01 | HDD03size | 70GB
server02 | CPUcores | 4
server02 | Memory | 32GB
server02 | HDD01size | 50GB
server02 | HDD02size | 60GB
server02 | OS | Windows 2012 R2
我嘗試使用MSSQL查詢創建的表是帶有以下輸出的新表:
servername:|CPUcores:|Memory:|HDD01size:|HDD02size:|HDD03size:|OS:
server01 |2 |64GB |50GB |60GB |70GB | -
server02 |4 |32GB |50GB |60GB | - |Windows 2012 R2
需要在數據獲取期間動態創建這些列。 列名是:
SELECT DISTINCT [FactName]
FROM [table]
...加上“服務器名”列。
我不知道什么是最好的方法。
這稱為表樞轉。 這是使用conditional aggregation
的一種選擇:
select servername,
max(case when FactName = 'CPUcores' then FactValue end) as Cpucores,
max(case when FactName = 'Memory' then FactValue end) as Memory,
max(case when FactName = 'HDD01size' then FactValue end) as HDD01size,
max(case when FactName = 'HDD02size' then FactValue end) as HDD02size,
max(case when FactName = 'HDD03size' then FactValue end) as HDD03size,
max(case when FactName = 'OS' then FactValue end) as OS
from yourtable
group by servername
如果您不知道所有潛在值/列,則需要使用dynamic sql
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.