如何分割4列,一行分为2列,两行?

时间:2015-12-18 22:11:24

标签: sql sql-server tsql split sql-server-2008-r2

我正在使用SSRS 2008R2SSMS 2008R2,我正在尝试拆分4列,一行分为两行,两列。我怎样才能做到这一点?

以下是一些示例数据:

create table #foo
(col1 int, col2 int, col3 int, col4 int)
insert #foo values(1,2,3,4)
insert #foo values(5,6,7,8)
insert #foo values(9,10,11,12)
select * from #foo

但我想将这些数据转换为如下所示:

create table #goo (col1 int, col2 int)
insert #goo values(1,2)
insert #goo values(3,4)
insert #goo values(5,6)
insert #goo values(7,8)
insert #goo values(9,10)
insert #goo values(11,12)
select * from #goo

我该怎么做?

2 个答案:

答案 0 :(得分:5)

简单如下:

create table #foo(col1 int, col2 int, col3 int, col4 int);
insert #foo values(1,2,3,4),(5,6,7,8),(9,10,11,12);

SELECT col1, col2 
FROM #foo
UNION ALL 
SELECT col3, col4
FROM #foo;

LiveDemo

前两列UNION ALL,第3列和第4列。

如果您需要存储在#goo中使用:

SELECT col1, col2
INTO #goo 
FROM #foo
UNION ALL 
SELECT col3, col4
FROM #foo;

SELECT * FROM #goo;

答案 1 :(得分:1)

我想它看起来像这样

SELECT CONCAT_WS(" ", col1, col2) FROM #foo UNION ALL
SELECT CONCAT_WS(" ", col3, col4) FROM #foo;

击穿

concat_ws - 将两列与单词分隔符组合在一起。在这种情况下是空格。

Union All - 与另一个选择器合并以创建多行。

SQLFiddle

http://sqlfiddle.com/#!9/ca24df/3/0