我有一张表 表内有个字段是xmltype 里面存放着各种数据 
但问题来了 我如何对xmltype字段里的内容进行统计呢
比如xmltype字段存放都是类似这样的xml
<MENZHEN><d_ykt_advice_list><d_ykt_advice_list_row><就诊类型>门诊</就诊类型><医嘱类型>药品</医嘱类型><医嘱号>182896</医嘱号><项目标识>02606</项目标识><项目名称>盐酸坦洛新缓释胶囊</项目名称><数量>7</数量><单位>粒</单位><单价>39.5</单价><金额>27.65</金额><发生时间>2013-04-01 15:10:20</发生时间></d_ykt_advice_list_row><d_ykt_advice_list_row><就诊类型>门诊</就诊类型><医嘱类型>药品</医嘱类型><医嘱号>182899</医嘱号><项目标识>01679</项目标识><项目名称>非那雄胺片</项目名称><数量>1</数量><单位>盒</单位><单价>16.77</单价><金额>16.77</金额><发生时间>2013-04-01 15:10:20</发生时间></d_ykt_advice_list_row></d_ykt_advice_list><d_ykt_advice_bqlist><d_ykt_advice_bqlist_row><医嘱号>182896</医嘱号><病情>尿频、尿急、排尿困难</病情></d_ykt_advice_bqlist_row><d_ykt_advice_bqlist_row><医嘱号>182899</医嘱号><病情>尿频、尿急、排尿困难</病情></d_ykt_advice_bqlist_row></d_ykt_advice_bqlist><d_ykt_advice_zdlist><d_ykt_advice_zdlist_row><医嘱号>182896</医嘱号><序号>1</序号><诊断名称>慢性前列腺增生</诊断名称></d_ykt_advice_zdlist_row><d_ykt_advice_zdlist_row><医嘱号>182899</医嘱号><序号>1</序号><诊断名称>慢性前列腺增生</诊断名称></d_ykt_advice_zdlist_row></d_ykt_advice_zdlist></MENZHEN>
我要对每种药品的数量进行统计 如何做的 每条数据内都有类似的xml

解决方案 »

  1.   

    create table MY_XMLTYPE
    (
      CODE NUMBER,
      INFO SYS.XMLTYPE
    );declare
    my_xml clob := '<?xml version="1.0" encoding="UTF-8"?>
    <COLS>
    <DATE><![CDATA[2013-02-16]]></DATE>
    <RECORD_ID><![CDATA[172211]]></RECORD_ID>
    <NUMBER><![CDATA[83]]></NUMBER>
    </COLS>';
    my_xml1 clob := '<?xml version="1.0" encoding="UTF-8"?>
    <COLS>
    <DATE><![CDATA[2013-06-16]]></DATE>
    <RECORD_ID><![CDATA[172211]]></RECORD_ID>
    <NUMBER><![CDATA[123]]></NUMBER>
    </COLS>';
    begin
    insert into MY_XMLTYPE values(10,xmltype(my_xml));
    insert into MY_XMLTYPE values(11,xmltype(my_xml1));
    commit;
    end; select code,sum(extractValue(info,'/COLS/NUMBER')) from MY_XMLTYPE  where existsnode(info,'/COLS/NUMBER = 83') = 1 and code = 10 group by code;
      

  2.   

    感觉从数据库里直接处理好像不太容易,建议做个程序,把内容取出来在处理,比如转换为pb中的Dw