oracle非常量不能用于privot_oracle 11g 新特性—行列转换—pivot和unpivot

Oracle 11g 引入了Pivot和Unpivot功能,方便进行行列转换。本文通过示例展示了如何使用Pivot将行数据汇总为列,以及使用Unpivot将列数据恢复为行。通过这两个新特性,可以更便捷地操作数据,简化复杂查询。
摘要由CSDN通过智能技术生成

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的这个新特性非常好用!省去了很多不必要的麻烦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值