li
  当前位置:主页 > 性能优化 > 文章内容
li
Oracle11新特性——行列转换语句(一)
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:10  
本文章共7937字,分6页,当前第1页,快速翻页:
 

打算写一系列的文章介绍11g的新特性和变化。

这篇文章继续介绍11g的行转列语法。


在11g以前,行列转化是一个比较麻烦的事情。对于行转列,需要使用很多的聚集函数加上DECODE语句。11g推出的PIVOT语法可以轻松的解决行转列的问题。

先根据USER_OBJECTS建立一张测试表:

SQL> CREATE TABLE T AS SELECT * FROM DBA_SEGMENTS;

表已创建。

为了将行转换为列,10g及以前版本需要:

SQL> SELECT
2 OWNER,
3 SUM(DECODE(SEGMENT_TYPE, 'TABLE', BYTES)) TABLE_SIZE,
4 SUM(DECODE(SEGMENT_TYPE, 'TABLE PARTITION', BYTES)) TABLE_PART_SIZE,
5 SUM(DECODE(SEGMENT_TYPE, 'INDEX', BYTES)) INDEX_SIZE,
6 SUM(DECODE(SEGMENT_TYPE, 'INDEX PARTITION', BYTES)) INDEX_PART_SIZE
7 FROM T
8 GROUP BY OWNER;

OWNER TABLE_SIZE TABLE_PART_SIZE INDEX_SIZE INDEX_PART_SIZE
------------------------------ ---------- --------------- ---------- ---------------
WKSYS 2621440 5177344
MDSYS 11993088 131072 6881280 393216
YANGTK 1114112 65536
TSMSYS 65536 65536
WK_TEST 5767168 6553600
OUTLN 196608 262144
CTXSYS 2031616 3407872
OLAPSYS 7471104 8847360
FLOWS_FILES 65536 262144
SYSTEM 7077888 2490368 9568256 3276800
EXFSYS 1310720 2490368
DBSNMP 1048576 524288
ORDSYS 3670016 5832704
SYSMAN 53608448 69402624
XDB 17170432 7471104
FLOWS_030000 41680896 54329344
SYS 547356672 8716288 165216256 7929856
WMSYS 2424832 3866624

已选择18行。

在11g中可以使用新增的语法PIVOT

SQL> SELECT *
2 FROM (SELECT OWNER, SEGMENT_TYPE, BYTES FROM T)
3 PIVOT (SUM(BYTES) FOR SEGMENT_TYPE IN
4 ('TABLE' TABLE_SIZE, 'TABLE PARTITION' TABLE_PART_SIZE,
5 'INDEX' INDEX_SIZE, 'INDEX PARTITION' INDEX_PART_SIZE));

OWNER TABLE_SIZE TABLE_PART_SIZE INDEX_SIZE INDEX_PART_SIZE
------------------------------ ---------- --------------- ---------- ---------------
WKSYS 2621440 5177344
IXDBA.NET社区论坛
MDSYS 11993088 131072 6881280 393216
YANGTK 1114112 65536
TSMSYS 65536 65536
WK_TEST 5767168 6553600
OUTLN 196608 262144
CTXSYS 2031616 3407872
OLAPSYS 7471104 8847360



阅读更多内容1 · 2 · 3 · 4 · 5 · 6 · 下一页>>


  上一篇: Oracle11新特性——SQL缓存结果集...   下一篇: Oracle11新特性——SQL缓存结果集...
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·Oracle11新特性——SQL缓存结果集...
·Oracle11新特性——SQL缓存结果集...
·Oracle10g增加备份集的CATALOG
·Oracle11新特性——DATA GUARD打...
·Oracle11g新特性——LOB类型功能...
·Oracle11g新特性——密码区分大小...
·Oracle10G新增NO提示
·Oracle10g的简化连接方式
·Oracle10g的FAST DUAL执行计划
·10g数据泵和导入导出性能对比(二...
·Oracle11新特性——SQL缓存结果集...
·Oracle11新特性——行列转换语句...
·Oracle11新特性——PLSQL函数缓存...
·Oracle11新特性——PLSQL函数缓存...
·Oracle11新特性——PLSQL函数缓存...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
·Oracle11新特性——PLSQL新特性(...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接