ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 11g 新特性—行列转换—pivot和unpivot

oracle 11g 新特性—行列转换—pivot和unpivot

原创 Linux操作系统 作者:0x0x0x 时间:2012-06-29 16:40:09 0 删除 编辑
oracle  11g 新特性——行列转换——pivot和unpivot
 
oracle 11g增加了两个行列转换的查询方式:Pivot 和 unpivot
 
下面举例说明其应用:
 
第一:行转列--pivot
 
SQL> select * from t;
     YEARS     MONTHS PRODUCT_NA      SALES
---------- ---------- ---------- ----------
      2008          1 A                1000
      2008          1 B                1500
      2008          2 A                2000
      2008          2 B                3000
      2008          2 C                1000
      2008          3 A                3000
      2008          1 A                 120
已选择7行。
 
SQL> select * from t pivot(sum(sales) for product_name in ('A' A,'B' B,'C' C));
     YEARS     MONTHS          A          B          C
---------- ---------- ---------- ---------- ----------
      2008          2       2000       3000       1000
      2008          1       1120       1500
      2008          3       3000

如上述所示,通过使用pivot,实现了行列的汇总转换!
 
第二:列转行--unpivot
 
为了说明问题,先创建一个视图:
 
SQL> create or replace view pivot_t as
  2  select * from t pivot(sum(sales) for product_name in ('A' A,'B' B,'C' C))
  3  /
视图已创建。
 
SQL> select * from pivot_t;
     YEARS     MONTHS          A          B          C
---------- ---------- ---------- ---------- ----------
      2008          2       2000       3000       1000
      2008          1       1120       1500
      2008          3       3000
 
--列转行:
SQL> select * from pivot_t unpivot(sales for product_name in (A,B,C));
     YEARS     MONTHS P      SALES
---------- ---------- - ----------
      2008          2 A       2000
      2008          2 B       3000
      2008          2 C       1000
      2008          1 A       1120
      2008          1 B       1500
      2008          3 A       3000
已选择6行。
 
如上所示,通过使用unpivot,又将行转列出来的结果集转换回来了!

点评:oracle 11g的这个新特性非常好用!省去了很多不必要的麻烦!
如果是在oracle 11g以下,要想实现行列的转换,可以参考这个链接:
http://blog.csdn.net/tianlesoftware/article/details/4704858
 
 
 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26977915/viewspace-734165/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-26

  • 博文量
    35
  • 访问量
    96715