繁体   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