我有一个场景需要将列转换为行。我有两个表table1
和table2
,其结构如下
表1:
Col11 Col12 Col13
-------------------------
200 text 55
表2:
Col1 Col2
--------------------
Col11
Col12
Col13
需要以上两个表中的以下结果
Col1 Col2
--------------------
Col11 200
Col12 text
Col13 55
是否可以使用临时表来执行此操作?
答案 0 :(得分:1)
您可以使用UNION ALL
执行此操作:
SELECT 'Col1' AS Col1, Col1 AS Col2
FROM mytable
UNION ALL
SELECT 'Col2', Col2
FROM mytable
UNION ALL
SELECT 'Col3', Col3
FROM mytable
Table2
似乎在生成所需的结果集方面没有任何作用。所以在上面的查询中省略了它。
答案 1 :(得分:1)
您可以使用交叉申请或UNPIVOT获取
select
coll,colvalue
from PivotColToRow
cross apply
(
select 'col1', col1 union all
select 'col2', col2 union all
select 'col3', col3
) c (Coll, colvalue);
使用UNPIVOT
select col,colvalue
from PivotColToRow
unpivot
(
colvalue
for col in (col1, col2, col3)
) unpiv;
试试这个