我的表格包含以下列:
A | B | C | D | E | F
我想将其显示如下:
MyColumn | MyColumn2
A | B
C | D
E | F
如您所见,我希望将列显示为具有自定义列名称的对。这些对是A列和B列,C列和D列以及C和D列。
答案 0 :(得分:2)
select A as [Col 1], B as [Col 2] from table
union all
select C,D from table
union all
select E,F from table
答案 1 :(得分:0)
这不会扩展到十亿列,但......
Select A as MyColumn, B as MyColumn2 from Table
UNION
Select C as MyColumn, D as MyColumn2 from Table
UNION
Select E as MyColumn, F as MyColumn2 from Table
此查询将删除重复项。所以说表中有一条记录
你好|世界|你好|世界|你好|世界
我的选择只会返回
你好|世界
Sambo将返回所有三个......
答案 2 :(得分:0)
如果我正确地理解你,你可以通过工会来做到这一点:
SELECT A as MyColumn, B as MyColumn2
UNION
SELECT C as MyColumn, D as MyColumn2
UNION
SELECT E as MyColumn, F as MyColumn2
如果匹配列的数据类型不同,那么首先需要转换数据类型,如下所示:
SELECT CONVERT(VARCHAR(10), A) as MyColumn, CONVERT(VARCHAR(10), B) as MyColumn2
UNION
SELECT CONVERT(VARCHAR(10), C) as MyColumn, CONVERT(VARCHAR(10), D) as MyColumn2
UNION
SELECT CONVERT(VARCHAR(10), E) as MyColumn, CONVERT(VARCHAR(10), F) as MyColumn2
答案 3 :(得分:0)
在Sql Server 2005中,Unpivot运算符可以解决您的问题。 Unpivot converts columns to rows in sql server 2005
希望有所帮助