PIOVT标准格式:
SELECT ...
FROM <source_table_or_table_expression>
PIVOT(<agg_func>(<aggregation_element>)
FOR <spreading_element>
IN (<list_of_target_columns>)) AS <result_table_alias>
...;
用法举例:
1、首先创建一个数据表
CREATE TABLE tScore
(
ID int,
Name varchar(10), //学生姓名
Subject varchar(20), //学科
Score float //成绩
)
2、向Score表插入数据后的展示
ID | Name | Subject | Score |
1 | 张三 | 数学 | 100 |
2 | 张三 | 语文 | 90 |
3 | 李四 | 数学 | 95 |
4 | 李四 | 语文 | 85 |
3、行转列 之后变为
ID | Name | 数学 | 语文 |
1 | 张三 | 100 | 90 |
2 | 李四 | 95 | 85 |
动态Sql写法:
SELECT *
FORM (SELECT ID,Name,Subject,Score from tScore) as a
PIVOT(SUM(Score) FOR Subject in([语文],[数学])) as p;
所衍生出的知识点:
1、将数据从行转为列的处理,专业点说叫做透视转换
2、将数据从列转为行的处理,专业点说叫做逆透视转换