2

我的表有以下列:

A  |  B  |  C  |  D  |  E  |  F  

我想显示如下:

MyColumn  |  MyColumn2
  A       |    B
  C       |    D
  E       |    F

如您所见,我想将列显示为具有自定义列名的对。这些对是 A 列和 B 列、C 列和 D 列以及 C 和 D 列。

4

4 回答 4

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
于 2009-02-18T11:11:35.387 回答
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's 将返回所有三个...

于 2009-02-18T11:12:33.603 回答
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
于 2009-02-18T11:17:41.750 回答
0

在 Sql Server 2005 中,Unpivot 运算符可以解决您的问题。 Unpivot 将列转换为 sql server 2005 中的行

希望能帮助到你

于 2009-04-25T05:21:39.297 回答