PIVOT / UNPIVOT多行和多列

时间:2015-10-13 20:52:10

标签: sql sql-server

我有一张包含以下(非常简化)数据的表格:

ID   Value1   Value2   Value3
-----------------------------
1    5        7        Test
2    4        7        Test2

我想获取该列的每个列名和行中的值;所以,我想要的输出看起来像这样:

Column        1        2
----------------------------
Value1        5        4
Value2        7        7
Value3        Test     Test2

我一直在玩PIVOT和UNPIVOT,但不能很好地解决它。任何帮助将不胜感激。

SQLFiddle here

1 个答案:

答案 0 :(得分:2)

对我来说,我想到的是带有条件聚合的union all

select 'Value1',
       max(case when id = 1 then value1 end) as [1],
       max(case when id = 2 then value1 end) as [2]
from t
union all
select 'Value2',
       max(case when id = 1 then value2 end) as [1],
       max(case when id = 2 then value2 end) as [2]
from t
select 'Value3',
       max(case when id = 1 then value3 end) as [1],
       max(case when id = 2 then value3 end) as [2]
from t;

我认为您可以使用pivot / unpivot来完成,但我认为这更简单。