在SQL中将标头转换为行值

时间:2018-02-21 06:37:34

标签: sql-server

这是否可行,将第一张桌子改为第二张桌子(见下文)? 我想将标题转换为其字段的行值。

我使用的是Microsoft SQL Server 2012。

样本表

enter image description here

感谢您的建议。

第一个表是数据库中存在的表。

第二个是我想在查询结果中得到的内容。只有一个表源。

我想使用UNPIVOT函数来做到这一点。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

请尝试UNION ALL,如下所示。我只考虑了你所展示的那些专栏。

SELECT Header1 AS NewHeader1 ,'Header1' AS NewHeader2 FROM TableName
UNION ALL
SELECT Header2 AS NewHeader1 ,'Header2' AS NewHeader2 FROM TableName

答案 1 :(得分:0)

在这种情况下,您只需使用Union All

即可
SELECT
    Newheader1 = Header1,
    Newheader2 = 'Header1'
    FROM YourTable
UNION ALL
SELECT
    Newheader1 = Header2,
    Newheader2 = 'Header2'
    FROM YourTable

答案 2 :(得分:0)

我会使用交叉申请而不是UNION ALL

select a.* from table t
cross apply (
    values (Header1, 'Header1'),
           (Header2, 'Header2')
)a(NewHeader1, NewHeader2)
order by 1