分享

SQL,行列转换的函数

 俺永不后悔 2012-07-04
SQL,行列转换的函数
   PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表。PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。 PIVOT 提供的语法比一系列复杂的 SELECT...CASE 语句中所指定的语法更简单和更具可读性。

     在我们进行复杂的查询统计的时候,特别是销售统计、处理大量数据的时候,PIVOT的作用就显得非常突出。

select * From a
---------------------------------
year month value
2009 1 11
2009 2 12
2009 3 13
2009 4 14
2010 1 21
2010 2 22
2010 3 23
2010 4 24
2010 4 24
--------------------------------

select * From a pivot(max(value) for month in ([1],[2],[3],[4])) pvt
--------------------------------
2009 11 12 13 14
2010 21 22 23 24

当然这只是个简单的小例子,你可以使用PIVOT,然后进行加工处理,它可以实现更为强大的功能。在应用的时候可以实现临时表、分页等功能。

UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列值。但是在实际应用中,有些聚合之后的数据很难进行拆分。所以呢,UNPIVOT并非PIVOT的逆过程。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多