我有一张包含以下(非常简化)数据的表格:
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,但不能很好地解决它。任何帮助将不胜感激。
答案 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
来完成,但我认为这更简单。