将单个表行+列名称转换为列

时间:2016-01-18 04:20:22

标签: mysql sql

我有一个简单的SQL select查询,它返回以下结果(单行):

 [0]  [1]  [2]  [3] [13] (column headings)
 5102 4516 31   95  2    (row data)

使用SQL,我需要将其转换为返回两列(5行),如下所示:

[id]  [val]
0     5102
1     4516
2     31
3     95
13    2

我希望能够使用枢轴或类似的东西来做到这一点。

用于生成第一个(单行)结果的SQL查询:

 SELECT * FROM TABLE WHERE KEY = BLAH

1 个答案:

答案 0 :(得分:1)

您需要unpivot数据

SQL Server使用Cross Apply。试试这个

SELECT id,val
FROM   yourtable
       CROSS apply (VALUES ([0],'0'),
                           ([1],'1'),
                           ([2],'2'),
                           ([3],'3'),
                           ([13],'13')) cs  (val,id)

或使用Union ALL取消数据

SELECT [0] AS val,'0' AS id
FROM   yourtable
UNION ALL
SELECT [1],'1'
FROM   yourtable
UNION ALL
SELECT [2],'2'
FROM   yourtable
UNION ALL
SELECT [3],'3'
FROM   yourtable
UNION ALL
SELECT [13],'13'
FROM   yourtable