unpivot特点
unpivot运算符通过将列旋转到行来执行pivot的反向操作,unpivot
并不完全是 pivot
的逆操作。 pivot
执行聚合,并将多个可能的行合并为输出中的一行。unpivot
不重现原始表值表达式的结果,因为行已被合并。 另外,unpivot
输入中的 null 值也在输出中消失了。如果值消失,表明在执行 pivot
操作前,输入中可能就已存在原始 null 值。
语法
select 输出列名,...,输出列名,输出值列名称 from (select 输出列名,...,转换列列名,... from 数据库名.架构名.表名) as 别名 unpivot( 输出值列名称 for 输出列名 in (转换列列名,...) ) as 别名
示例
select unpriots.name,unpriots.course,unpriots.score from (select name,android,[.net],ios,html5 from test1.dbo.student2) as a unpivot( score for course in (android,[.net],ios,html5) ) as unpriots
示例结果