Oracle 拆分数量值10行每行数量值1 输出如下所示:------PON名称仓库位置数量XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC204

Oracle 拆分数量值10行每行数量值1 输出如下所示:------PON名称仓库位置数量XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC204,oracle,xmltype,xmltable,Oracle,Xmltype,Xmltable,拆分数量值10行每行数量值1 输出如下所示:------PON名称仓库位置数量XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC2042 1因此,所需的输出应该有10行,而不是4行?此外,您是否能够从xml字符串中提取值,并且您只需要帮助从一行中创建10

拆分数量值10行每行数量值1
输出如下所示:------PON名称仓库位置数量XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC2042 1 XYZ-3450462 XYZ组件XYZ-ABC2042 1因此,所需的输出应该有10行,而不是4行?此外,您是否能够从xml字符串中提取值,并且您只需要帮助从一行中创建10行,或者您还需要帮助从xml字符串中提取数据?感谢分享知识。。。。!假设xml表行集合的数据结构不相似,那么在这种情况下我们将怎么做呢?如何使用PLSQL从上述xml数据中提取数据,在该数据文件中,行集合数据列动态变化,并拆分数量每个记录数量值1,表中数量值的总和应与xml数量值中的总和相同。请澄清您的问题,而不是对我的答案发表评论,并建议对我的答案进行编辑以覆盖它。
<ROWSET>
 <ROW>
<PONumber>XYZ-3450462</PONumber>
<OfferName>XYZ COMPONENT</OfferName>
<INVLOC>XYZ-ABC2042</INVLOC>
<Quantity>10</Quantity>
</ROW>
---------------------------- 
PONumber OfferName WarehouseLocation Quantity 
XYZ-3450462 XYZ COMPONENT XYZ-ABC2042 1 
XYZ-3450462 XYZ COMPONENT XYZ-ABC2042 1 
XYZ-3450462 XYZ COMPONENT XYZ-ABC2042 1 
XYZ-3450462 XYZ COMPONENT XYZ-ABC2042 1
WITH table_name ( xml ) AS (
  SELECT '<ROWSET>
<ROW><PONumber>XYZ-3450462</PONumber><OfferName>XYZ COMPONENT</OfferName>
     <INVLOC>XYZ-ABC2042</INVLOC><Quantity>10</Quantity></ROW>
<ROW><PONumber>ABC-1234567</PONumber><OfferName>ABC COMPONENT</OfferName>
     <INVLOC>ABC-XYZ1234</INVLOC><Quantity>3</Quantity></ROW>
</ROWSET>' FROM DUAL
),
xml_data ( PONumber, OfferName, INVLOC, Quantity, RN ) AS (
  SELECT  PONumber, OfferName, INVLOC, 1, Quantity
  FROM    table_name t,
          XMLTable(
            '/ROWSET/ROW'
            PASSING XMLType( t.xml )
            COLUMNS PONumber  VARCHAR2(20) PATH '/ROW/PONumber',
                    OfferName VARCHAR2(20) PATH '/ROW/OfferName',
                    INVLOC    VARCHAR2(20) PATH '/ROW/INVLOC',
                    Quantity  NUMBER(5,0)  PATH '/ROW/Quantity'
         ) x
UNION ALL
  SELECT  PONumber, OfferName, INVLOC, 1, RN - 1
  FROM    xml_data
  WHERE   RN > 1
)
SELECT PONumber, OfferName, INVLOC, Quantity FROM xml_data;