Sql的行列转换

Posted John_杰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql的行列转换相关的知识,希望对你有一定的参考价值。

创建表scores

一、传统的行列转换

纵表转横表

我们要转成的横表是这样子的:


pivot是sql server 2005 提供的运算符,所以只要数据库在05版本以上的都可以使用。主要用于行和列的转换。

 pivot纵表转横表

select
    t2.姓名,
    t2.数学,
    t2.物理,
    t2.语文
from Scores as t1
pivot (sum(分数) for 课程 in(数学,语文,物理)) as t2

pivot将原来表中 课程字段中的 数据行 数学,语文,物理 转换为列,并用sum取对应列的值。

unpivot 横表转纵表

select
     *
 from
 scores2
 unpivot (分数 for 课程 in (语文,数学,物理)) as t3

 unpivot 将 语文,数学,物理 列转为行,分数为新的一列存放对应的值。

以上是关于Sql的行列转换的主要内容,如果未能解决你的问题,请参考以下文章

sql动态实现行列转换

sql行列转换和累加问题~~~

[高分悬赏] sql 行列转换 请高人指点

sql server行列转换问题

写sql,怎么将查询结果的行列转换呀?

SQL行列转换