oracle xmltype欄位統計的有關問題

tags:    時間:2013-12-24 18:04:45
oracle xmltype欄位統計的問題
我有一張表 表內有個欄位是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

------解決方案--------------------
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;

------解決方案--------------------
感覺從資料庫里直接處理好像不太容易,建議做個程序,把內容取出來在處理,比如轉換為pb中的Dw

推薦閱讀文章

Bookmark the permalink ,來源:互聯網