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 将 语文,数学,物理 列转为行,分数为新的一列存放对应的值。