oracle 11g中的pivot和unpivot转换操作.pdf

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
oracle 11g中的pivot和unpivot转换操作

对于pivot 和unpivot 这个Oracle 11g 的新功能一直就想总结一下,正好赶上论坛中有很多人 会提问相关的问题,于是利用空闲时间翻译了一篇相关的网络文章。链接如下: /display.php?id=506 ITPuber :LuiseDalian 翻译 时间:20 12.11.29 1 / 41 1 Oracle 11g 中的pivot 和unpivot 查询 转换查询包括将行转换成列(pivot)和将列转换成行(unpivot),从而产生交叉表格式的结果。 转换是一项通用的技术,尤其对于报表来讲,正是由于该项技术使得多年来针对 Oracle 的不同 版本,可以使用SQL 语句产生转换查询的结果集。从Oracle 11g 开始,包含了显式的转换查询 支持,即PIVOT 和UNPIVOT 关键字。这是对SELECT 语句的扩展。 1.1 pivot 这里我们从pivot 操作开始。大多数的开发者首先要熟悉转换数据:即多行被聚合,然后转换成 列,每一列表示聚合数据的不同范围。语法: SELECT ... FROM ... PIVOT [XML] ( pivot_clause pivot_for_clause pivot_in_clause ) WHERE ... 除了新的pivot 关键字外,可以看到3 个新的pivot 子句,描述如下:  pivot_clause :定义被聚合的列(pivot 是一种聚合操作)  pivot_for_clause :定义被分组和转换的列。  pivot_in_clause :定义pivot_for_clause 子句中列的过滤器(例如使用值的范围来限制结果)。 pivot_in_clause 中每个值的聚合都将被转换成单独的列 1.1.1 一个简单的例子 这个例子是对pivot 语法的简单的演示,使用scott.emp 表,这里将通过department 和job 来汇总 salaries,然后转换对每个部门的汇总到它们各自的列上,在转换之前,先看一下基础数据 SELECT job, deptno, SUM (sal) AS sum_sal FROM emp GROUP BY job, deptno 2 / 41 ORDER BY job, deptno; 下面使用11g 的语法来转换数据,对于每个job 我们将sal 的汇总,对每个部门使用单独一列。 WITH pivot_data AS (SELECT deptno, job, sal FROM emp) SELECT * FROM PIVOT_data PIVOT ( SUM (sal) --pivot_clause FOR deptno --pivot_for_clause IN (10, 20, 30, 40) --pivot_in_cluase ); 可以看到对每个job 按部门对 sal 的汇总已经变成了列,关于这个例子有几点需要注意,语法和 结果:  本例中的pivot_clause 求sal 列的和,如果需要可以指定多列和可选的别名。  pivot 操作执行隐式的GROUP BY ,使用的列是没有出现在pivot_clause 中的列(本例为job 和 deptno )。大多数的转换查询都会在列的子集上进行操作,所以会使用存储视图、内联视 图或子查询。  这里的pivot_for_clause ,表明我们只想转换deptno 的聚合。  这里的prvot_in_cluase ,指明deptno 值的范围,这里我们硬编码4 个值的列表,这也是为什 3 / 41 么会产生4 个转换列原因。如果省略别名,Oracle

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档