我将xml doc加载到Oracle 11g的xmltype列中。我的文档有重复的节点,我需要展平。我一直在使用XMLTable但得到单例错误。如果涉及子节点,我找到了一个解决方案,但无法让它与重复节点一起工作。感谢任何帮助!
以下是doc的示例片段。客户在我们的xml doc中有两条记录:
<Customers>
<Customer>
<Id>123</Id>
<Name>Acme</Name>
<State>CA</State>
<State>NY</State>
</Customer>
<Customer>
<Id>456</Id>
<Name>Acme</Name>
<State>FL</State>
</Customer>
</Customers>
对于Acme客户123,我试图获得以下结果集:
ID Name State
但是,我的查询返回
ID名称状态
FL属于Acme的ID = 456记录。这是我的查询,不知道如何强制连接在我的两个XMLTables之间正确限制id。
select distinct
xmlTable1.Id
,xmlTable1.Name
,xmlTable2.State
from FILE_XML FX,
xmltable('//Customer'
PASSING FX.XML_COLUMN
columns
Name VARCHAR2(255) PATH '//Name'
,Id VARCHAR2(255) PATH '//Id'
,States XmlType Path '//Customer'
) xmlTable1
left join xmltable('//State'
passing xmlTable1.States
columns
State VARCHAR2(255) path '.') XMLTable2
on (1=1)
where xmltable1.id = 123;