我正在使用SSRS 2008R2
和SSMS 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
我该怎么做?
答案 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