0

我有一个如下的 XML

Declare @BathData XML
SET @BathData='<Batch>
<Customers>
<Customer>
    <CustomerId>1</CustomerId>
    <Product>
        <ProductId>10</ProductId>
        <ProductId>11</ProductId>
    </Product>
</Customer>
<Customer>
        <CustomerId>2</CustomerId>
        <Product>
            <ProductId>22</ProductId>
            <ProductId>23</ProductId>
            <ProductId>25</ProductId>
        </Product>
</Customer>

 </Customers>
 </Batch>'

我想要的结果如下

CusomerId ProductId
1           10
1           11
2           20
2           23
2           35

我正在使用以下方式对其进行整理

 SELECT Finaldata.R.value('CustomerId[1]','int')            
 CustomerId,Finaldata.R.value('Product[1]','int') as ProductId
 FROM @BathData.nodes('//Batch/Customers/Customer') as Finaldata (R)

但显然它不起作用快速响应真的很有帮助谢谢

4

1 回答 1

0

迭代 ProductId。您可以从两个级别(../../CustomerId)获取客户:

SELECT  Finaldata.R.value('(../../CustomerId)[1]','int') as CustomerId
,       Finaldata.R.value('(.)[1]','int') as ProductId
FROM    @BathData.nodes('/Batch/Customers/Customer/Product/ProductId') 
             as Finaldata (R)

Dot.用作对当前节点的引用。

于 2013-05-14T05:54:04.137 回答