SQL将列转换为行

时间:2009-02-18 11:07:22

标签: sql row

我的表格包含以下列:

A  |  B  |  C  |  D  |  E  |  F  

我想将其显示如下:

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

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

4 个答案:

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

希望有所帮助