2015-12-29 65 views
1

我可以知道如何将此查询的结果输出为此格式?将列转换为SQL Server 2012中的行

查询

Select * 
from sys.databases 
where name = 'your_db_name' 

原始输出:

name databaseid source_database_id owner_sid 
xxx xxxxxxxxxx xxxxxxxxxxxxxxxxxx xxxxxxxxx 

所需的输出:

Parameter   Value 
name    xxxxx 
databaseid   xxxxx 
source_database_id xxxxxx 
owner_sid   xxxxxx 

回答

2

使用Cross ApplyTable valued constructor到unpivot的数据

SELECT Parameter, 
     Value 
FROM yourtable 
     CROSS apply (VALUES ('name',name), 
          ('databaseid',Cast(databaseid AS VARCHAR(100))), 
          ('source_database_id',Cast(source_database_id AS VARCHAR(100))), 
          ('owner_sid',Cast(owner_sid AS VARCHAR(100))))cs(Parameter, Value) 

注意:如果没有,您可能会使用动态代码。的列是未知的

+0

你可能想'CAST'将'Value'设置为'VARCHAR'。 –

+0

@FelixPamittan - 是的,没有检查名称列 –

+0

谢谢!!!!!!!!!!!!!! – user664481