将列拆分为行

时间:2014-09-26 15:45:26

标签: sql-server tsql sql-server-2012

我有一行列数未知。我需要将所有这些列都拆分为一列。这是一个例子。我从这个表开始

select 1 as c1, 2 as c2, 3 as c3
into tempP

如果我们选择此表,结果将是

c1  c2  c3
1   2   3

我希望结果是这个

new_name
1
2
3

另外,请记住,我不知道我是否会有3列。我可能有100列,但行数总是1.谢谢。

1 个答案:

答案 0 :(得分:0)

正如Bluefeet在您的评论部分中提到的,您需要UNPIVOT查询,而不是Pivot查询。

您需要注意的一件事是,对于您是Unpivoting的所有列,数据类型应该相同。

像这样......

DECLARE @TABLE TABLE(c1 INT , c2 INT, c3 INT)
INSERT INTO @TABLE VALUES
(1,   2,   3),
(10, 20,  30)

SELECT NewColumn
FROM @TABLE 
 UNPIVOT (NewColumn FOR allcols IN ([c1],[c2],[c3]) ) up

结果:

NewColumn
1
2
3
10
20
30