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

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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26977915/viewspace-734165/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值