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
示例结果
