我的表具有以下列:

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
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

这不能扩展到十亿列,但...

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

此查询将虽然删除重复。所以说,有一个记录在表

  

您好|世界|你好|世界|你好|世界

我的选择将只返回

  

您好|世界

三宝的将返回所有三个...

在SQL Server 2005中UNPIVOT运算符可以解决您的问题。 逆透视转换在SQL Server的行列2005

希望它能帮助

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top