递归调用与行列转换.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
递归调用与行列转换所述重点递归调用下图描述了各个邮政局的上下级关系,如果想知道广东邮政下包括哪些邮政,并想知道分别处于第几级,应如何计算?如果想知道深圳邮政与杭州邮政的上级邮政有哪些,应如何计算?表中的数据与树形结构本级邮政 postal上级邮政pre-postal中国邮政上海邮政中国邮政广东邮政中国邮政广州邮政广东邮政深圳邮政广东邮政白云邮政广州邮政浙江邮政中国邮政杭州邮政浙江邮政Oracle 提供了一种递归查询的算法,可以快速解决该问题,接下来进行详细介绍递归查询语法SELECT expnFROM table|sql_dataSetsWHERE where_conditionSTART WITH expnCONNECT BY [PRIOR] field1 = field2ORDER BY fieldSELECT 子句说明要查询字段与函数FROM 子句说明从哪个树形结构的数据集中进行递归查询WHERE 子句说明对得到的树形结构做怎样的筛选START WITH子句说明以哪些节点作为根节点进行递归查询CONNECT BY 子句说明每行数据是按层次顺序检索,并规定将表中的数据插入树形结构关系中。如果缺省PRIOR操作符,则只能查询到符合条件的起始行,并不进行递归查询;如果加上PRIOR操作符,可说明遍历树的顺序,如果PRIOR加在父节点一侧,说明是按照从下至上进行遍历查询,如果PRIOR加在子节点一侧,说明是按照从上至下进行遍历查询ORDER BY子句可改变查询结果的显示顺序,而不必按照遍历树结构的顺序举例说明查询广东邮政下有哪些邮政,分别位于第几层,并显示其完整路径(从上至下查)SELECT postal,LEVEL,SYS_CONNECT_BY_PATH(postal,/)pathFROM postal_tableSTART WITH postal= 广东邮政CONNECT BY PRIOR postal = pre-postal;查询结果与树形结构如下所示postalLEVELpath广东邮政1/广东邮政广州邮政2/广东邮政/广州邮政白云邮政3/广东邮政/广州邮政/白云邮政深圳邮政2/广东邮政/深圳邮政LEVEL:说明节点所在的层级SYS_CONNECT_BY_PATH(字段名,2个字段间的连接符号),连接符合不能为逗号;其作用是将显示根节点到当前节点的完整路径查询深圳邮政与杭州邮政的上级邮政有哪些,并显示其根节点(从下至上查)SELECT postal, LEVEL,CONNECT_BY_ROOT(postal) root-postal FROM postal_tableSTART WITH postal IN (广州邮政, 杭州邮政)CONNECT BY PRIOR pre-postal = postal;查询结果与树形结构如下所示:postalLEVELroot-postal广州邮政1广州邮政广东邮政2广州邮政中国邮政3广州邮政杭州邮政1杭州邮政浙江邮政2杭州邮政中国邮政3杭州邮政CONNECT_BY_ROOT(字段名):返回当前节点的根节点CONNECT_BY_ISLEAF:判断是否为叶子节点,如果是显示为1;如果不是显示为0CONNECT_BY_ISCYCLE:判断当前节点中是否引用了某个父节点的内容,导致在树中出现了循环,如果是显示为1,如果不是,显示为0行列转换情形一假设student_A表中的数据是按照下列方式存放的,如果要转换成student_B表所示的存放方式,应如何进行转换?表student_B:姓名科目分数刘云语文90刘云数学95王刚语文92王刚数学90张杰语文90张杰数学98表student_A:姓名语文成绩数学成绩刘云9095王刚9290张杰8998可以通过下列的SQL语句来实现:SELECT name, 语文, 语文成绩 FROM student_AUNIONSELECT name, 数学, 数学成绩 FROM student_A;如果有更多科目的成绩,可以进行多次UNION来实现情形二在系统中会计凭证的借贷方金额存放方式如表A_2所示,如果要转换成表B_2所示的存放方式,应该如何实现?表A_2:会计科目借贷别金额10001:贷300表B_2:会计科目借方金额贷方金额100010001001200010020300SELECT 会计科目, DECODE(借贷别,借,金额,0)借方金额, DECODE(借贷别,贷,金额,0)贷方金额FROM A_2;aglp102作业说明作业目的凭证录入后,可以通过执行该作业,将尚未过账的凭证整批过账,过账后才可以打印各种财务报表原程序逻辑简介假设

文档评论(0)

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

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

1亿VIP精品文档

相关文档