一、使用PIVOT实现行列转换
1.1 PIVOT的基本语法
PIVOT是MySQL中的一个关键字,它可以将行转换成列。其基本语法如下:
SELECT
[列1],
[列3],
…
[表名]
PIVOT
[聚合函数]( [列名] )
FOR [列名] IN ( [值1], [值2], [值3], … )
其中,[列1]、[列2]、[列3]等表示需要查询的列名,[表名]表示需要查询的表名,[聚合函数]表示需要进行聚合的函数,[列名]表示需要进行行列转换的列名,[值1]、[值2]、[值3]等表示需要转换成列的值。
1.2 PIVOT的实例
例如,有如下一张表:
e Course ScoreMath 90glish 80ese 70
4 Jack Math 85glish 75ese 65
现在需要将这张表进行行列转换,即将学生的成绩转换成列,可以使用如下的SQL语句:
SELECTe,
[Math],glish],ese]
ScoreTable
PIVOT
AVG(Score)glishese])
执行以上SQL语句,将得到以下结果:
eglishese
Jack 857565908070
二、使用UNPIVOT实现行列转换
2.1 UNPIVOT的基本语法
UNPIVOT是MySQL中的另一个关键字,它可以将列转换成行。其基本语法如下:
SELECT
[列1],
[列3]
(
SELECT
[列1],
[列3],
…
FROM
[表名]
) AS [子查询]
UNPIVOT
[值] FOR [列名] IN ([列1], [列2], [列3], …)
) AS [别名]
其中,[列1]、[列2]、[列3]等表示需要查询的列名,[表名]表示需要查询的表名,[值]表示需要进行行列转换的值,[列名]表示需要进行行列转换的列名。
2.2 UNPIVOT的实例
例如,有如下一张表:
eglishese908070
Jack 857565
现在需要将这张表进行行列转换,即将学生的成绩转换成行,可以使用如下的SQL语句:
SELECTe,
Course,
Score
(
SELECTe,
Math,glish,ese
FROM
ScoreTable
) AS [子查询]
UNPIVOT
(glishese)
) AS [别名]
执行以上SQL语句,将得到以下结果:
e Course ScoreMath 90glish 80ese 70
Jack Math 85glish 75ese 65
MySQL中的行列转换功能非常实用,可以帮助大家快速处理数据。本文介绍了使用PIVOT和UNPIVOT两种方法实现行列转换的具体语法和实例,希望对大家有所帮助。