簡體   English   中英

MSSQL查詢將信息合並到新表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM