分类: 数据库开发技术
2010-08-21 14:03:48
概念:PIVOT提供将行转换了列的功能,UNPIVOT提供相反的功能.
PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合
用处:交叉报表
基本用法:
示例一(查询原始一个两列四行的表):
示例二(转换行列):
示例三(查询指定几位员工在各个厂商中的订单数量):
结果
VendorID Emp1 Emp2 Emp3 Emp4 Emp5
1 4 3 5 4 4
2 4 1 5 5 5
3 4 3 5 4 4
4 4 2 5 5 4
5 5 1 5 5 5
UNPIVOT 将与 PIVOT 执行几乎完全相反的操作,将列转换为行。假设以上示例中生成的表在数据库中存储为 pvt,并且您需要将列标识符 Emp1、Emp2、Emp3、Emp4 和 Emp5 旋转为对应于特定供应商的行值。这意味着必须标识另外两个列。包含要旋转的列值(Emp1、Emp2...)的列将被称为Employee,将保存当前位于待旋转列下的值的列被称为 Orders。这些列分别对应于 Transact-SQL 定义中的 pivot_column 和 value_column。以下为该查询。
示例四(UNPIVOT):
结果:
VendorID Employee Orders
1 Emp1 4
1 Emp2 3
1 Emp3 5
1 Emp4 4
1 Emp5 4
2 Emp1 4
2 Emp2 1
2 Emp3 5
2 Emp4 5
2 Emp5 5
...
chinaunix网友2010-08-23 21:39:10
Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com
chinaunix网友2010-08-23 21:39:10
Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com