SQL 将列转换为行

发布于 2024-07-14 00:04:04 字数 263 浏览 4 评论 0原文

我的表有以下列:

A  |  B  |  C  |  D  |  E  |  F  

我想按如下方式显示:

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

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

My table has the following columns:

A  |  B  |  C  |  D  |  E  |  F  

I want to displays this as follow:

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

As you can see i want to display the columns as pairs with a custom column name. The pairs are Column A and B, column C and D and column C and D.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

壹場煙雨 2024-07-21 00:04:04
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 [Col 1], B as [Col 2] from table
union all 
select C,D from table 
union all 
select E,F from table
旧情别恋 2024-07-21 00:04:04

如果我理解正确,您可以使用联合来做到这一点:

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

If I'm understanding you correctly you can do this with a union:

SELECT A as MyColumn, B as MyColumn2
UNION
SELECT C as MyColumn, D as MyColumn2
UNION
SELECT E as MyColumn, F as MyColumn2

If your datatypes aren't the same for the matching columns then you'll need to convert the datatype first, so something like:

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
小红帽 2024-07-21 00:04:04

这不会扩展到十亿列,但是......

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

这个查询将删除重复项。 假设表中有一条记录

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

My select 只会返回

你好| 世界

三宝将回归全部三...

This won't scale to a billion columns but...

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

This query will remove the duplicates though. So say there's one record in the table

Hello | World | Hello | World | Hello | World

My select will only return

Hello | World

Sambo's will return all three...

埖埖迣鎅 2024-07-21 00:04:04

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

希望能帮助到你

In Sql Server 2005 Unpivot operator can solve your problem.
Unpivot converts columns to rows in sql server 2005.

Hope it helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文