我已将 xml 文档加载到 Oracle 11g 中的 xmltype 列中。我的文档有我需要展平的重复节点。我一直在使用 XMLTable,但出现单例错误。如果涉及子节点,我找到了一个解决方案,但无法让它与重复节点一起工作。感谢任何帮助!
这是文档的示例片段。客户在我们的 xml 文档中有两条记录:
<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
- 第123章
- 123 纽约阿克米
但是,我下面的查询返回
ID 名称 状态
- 第123章
- 123 纽约阿克米
- 第123章
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;