我的表有以下列:
A  |  B  |  C  |  D  |  E  |  F  
我想显示如下:
MyColumn  |  MyColumn2
  A       |    B
  C       |    D
  E       |    F
如您所见,我想将列显示为具有自定义列名的对。这些对是 A 列和 B 列、C 列和 D 列以及 C 和 D 列。
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
    这不会扩展到十亿列,但是......
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's 将返回所有三个...
如果我对您的理解正确,您可以通过工会做到这一点:
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
    在 Sql Server 2005 中,Unpivot 运算符可以解决您的问题。 Unpivot 将列转换为 sql server 2005 中的行。
希望能帮助到你