Oracle学习之路-- 案例分析实现行列转换的几种方式

注:本文使用的数据库表为oracle自带scott用户下的emp,dept等表结构.

                          

                          

    通过一个例子来说明行列转换:

需求:查询每个部门中各个职位的总工资

    按我们最原始的思路可能会这么写:

             

    这种结果虽然也能满足要求,但是极难阅读,我们使用oracle中的decode()函数进行改写:

       

    这样的话就实现了需求要求的功能,其实这就是一种行列转换的方式,这是通过decode()函数实现的,是oracle独有的一个函数,如果使用通用的sql语句,那么该如何实现上面的查询结果呢?当然我们可以通过嵌套子查询来实现,只不过麻烦一点,如下:

      

     以上,虽然实现了要求的功能,但我们感觉还是有些复杂,在oracle 11g之后,提供了pivot()函数,专门用来进行行列转换,该函数的使用格式如下:

               

    通过此函数编写的代码:

      

 

posted @ 2016-07-11 21:19  冬至饮雪  阅读(1146)  评论(1编辑  收藏  举报