使用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 XMLTable 使用教程与实例

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

oracle 聚合函数 LISTAGG ,将多行结果合并成一行

LISTAGG(列名,' 分割符号') oracle 11g 以上的版本才有的一个将指定列名的多行查询结果,用 指定的 分割符号 合并成一行显示: 例如: 表原始数据: 需求:将 mb1_Tra...
  • sinat_35626559
  • sinat_35626559
  • 2017年05月22日 10:29
  • 5622

Oracle的XML函数

1 介绍XML(eXtended Markup Language可扩展标记语言)是一种基于文本,用于结构化任何可标记文档的格式语言。它是一种轻便的,可扩展的,标准的且简学易懂的保存数据的语言。它起源于...
  • jojoy_828
  • jojoy_828
  • 2008年04月18日 17:07
  • 9803

Oracle列转行函数 Listagg() 语法详解及应用实例

工作中用到一段比较复杂的SQL查询脚本,使用了listagg()函数实现了具有多个值的列字段的填充(即,列表聚合,list aggregation(我猜的))。 说简单点,listagg()函数可以实...
  • hpdlzu80100
  • hpdlzu80100
  • 2017年01月03日 22:16
  • 7153

oracle函数listagg的使用说明

oracle函数listagg的使用说明
  • lovelichao12
  • lovelichao12
  • 2016年04月08日 17:24
  • 13921

Oracle 中 用XMLTYPE类型 解析并操作XML数据

今天在论坛中有guys发问关于XML入oracle数据库并进行相关数据操作的问题,所以趁周末总结一下,嘿嘿。毕竟以后XML是数据库发展的趋势。用XMLTYPE类型对XML解析:/*   XML fil...
  • mantisXF
  • mantisXF
  • 2008年09月06日 18:36
  • 9481

oracle函数listagg()

在开始演示之前我们需要新建一张表出来: with temp as(     select 'China' nation ,'Guangzhou' city from dual union all ...
  • u013058618
  • u013058618
  • 2016年09月30日 14:01
  • 1538

Oracle行转列函数Listagg()和wm_co…

Oracle行转列函数Listagg()和wm_concat(column)函数   这是一个Oracle的行转列函数:LISTAGG() 先看示例代码: Sql代码     WITH T...
  • li19236
  • li19236
  • 2014年11月25日 18:14
  • 1341

Oracle-11g 新函数 LISTAGG 行转列

现在oracle数据库都在用11g的了,
  • suyishuai
  • suyishuai
  • 2014年05月15日 11:31
  • 11783

行专列listagg返回的是varchar2,长度过长报错问题

select LISTAGG (a.nename,',') within group (order by a.nename) nename from      (select distinct d....
  • luman1991
  • luman1991
  • 2016年09月30日 16:54
  • 2099
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用LISTAGG函数合并行,使用xmltable获取xmlType数据
举报原因:
原因补充:

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