使用LISTAGG函数合并行,使用xmltable获取xmlType数据

原创 2015年07月07日 15:38:09
select JIANGLIPUBLICSITUATION.get_area_name(o.area_no) as address,t.zh_title as zh_title,JIANGLIPUBLICSITUATION.get_main_person_info(t.prp_code) as main_person,t.main_org as main_org,extractvalue(pe.prp_xml, ''data/prp_extend/project_profile'') as project_profile,paper.paper_names as paper_names,patent.cnames as cnames,extractvalue(pe.prp_xml, ''data/proposal/extensionapplication'') as application_situation  from proposal t
                      left join proposal_extend pe on pe.prp_code=t.prp_code
                      left join
                      (SELECT prp_code,
                      LISTAGG(paper_name, '';'') WITHIN GROUP(ORDER BY paper_name) AS paper_names
                      FROM (select pe.prp_code as prp_code,t.* from proposal_extend pe,xmltable (''data/represent_papers/represent_paper'' passing pe.prp_xml columns paper_name varchar2(500) path ''paper_name'') t
                      )
                      GROUP BY prp_code) paper on t.prp_code=paper.prp_code
                      left join
                      (SELECT prp_code,
                      LISTAGG(cname, '';'') WITHIN GROUP(ORDER BY cname) AS cnames
                      FROM (select pe.prp_code as prp_code,t.* from proposal_extend pe,xmltable (''data/patents/patent'' passing pe.prp_xml columns cname varchar2(500) path ''cname'') t
                      )
                      GROUP BY prp_code) patent on t.prp_code=patent.prp_code
                      left join organization o on o.org_code=t.recommend_org_code
                      left join organization org on org.org_code=t.org_code
                      left join const_area c on c.area_no=o.area_no
                      left join person p on t.psn_code=p.psn_code
                      left join proposal_cached pc on t.pos_code=pc.pos_code
                      left join org_department od on t.dept_code=od.dept_code

                      where t.grant_code=30 and t.major_review_code is not null



select pe.prp_code as prp_code,t.* from proposal_extend pe,
      xmltable (
        'data/persons/person' passing pe.prp_xml columns
        ranking varchar2(50) path '@seq_no',
        cname varchar2(50) path 'cname',
        prof_title_name varchar2(50) path 'prof_title_name',
        org_name varchar2(100) path 'org_name',
        org_finish_name varchar2(100) path 'org_finish_name',
        work_result_one varchar2(1000) path 'work_result_one'
      ) t
where pe.prp_code=v_prp_code

ORACLE分析函数(6)--使用listagg实现行列转换

listagg函数是在oracle11g中新引入的聚合函数,当然也可以作为分析函数来使用。该函数可以基于分组内特定列的排序,将测量列进行拼接合并。...
  • joeadai
  • joeadai
  • 2013年10月18日 09:19
  • 1654

使用Listagg分析函数优化wmsys.wm_concat

在上周末优化班的时候一个朋友拿了一个SQL出来,让我现场优化,因为当时太忙,我安排七年老师帮忙处理。跑得慢的SQL如下:with temp as                 (select sgd...

关于oracle函数listagg的使用说明

做项目的过程中遇到过一个这样的需求,在“用户查询”前台加一个字段“用户角色”,要将用户的所有角色查询出来放到一个字段中,角色之间用“,”分隔。 发现一个办法是使用Oracle的listagg方法。 W...

oracle函数listagg的使用说明

oracle函数listagg的使用说明

oracle xml数据构建 XMLType相关函数

oracle xml数据构建 XMLType相关函数.

oracle xml数据构建 XMLType相关函数

oracle xml数据构建 XMLType相关函数
  • lky5387
  • lky5387
  • 2011年03月10日 13:35
  • 1299

Oracle XMLTable 使用教程与实例

从Oracle 10g开始,甲骨文公司新增了XQuery和XMLTable两个功能作为处理XML的武器。 XMLQuery一样,您可以使用XQuery语言构造XML数据和查询XML和关系数据。你可...

java操作Oracle类型XMLType总结二:使用Mybatis

上一篇我们已经成功用jdbc搞定了XMLType类型,这里将讲解如何用Mybatis来替代jdbc操作。 使用Mybatis操作XMLType,我们同样在Java端映射为String类型,当直接操作...

Listagg() - Oracle11gR2进行字符串汇总的新函数

在 wait4friend 的一篇老文《Oracle进行字符串汇总》里面,提到了三种常用的方式。其中比较好用的是10g之后提供的wm_concat()函数。在日常使用中,我们发现了wm_concat函...

listagg函数

跟10g的wm_concat类似,listagg是11g的聚集函数,但是有4000字符的限制。 转自http://blog.itpub.net/18922393/viewspace-7543...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用LISTAGG函数合并行,使用xmltable获取xmlType数据
举报原因:
原因补充:

(最多只允许输入30个字)