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