SQL Server中的Openxmls-在WITH子句中向下钻取

问题描述 投票:0回答:1

我有类似的XML

<root sxfversion="1.6" gendate="2020-01-23 16:16:40">
<products>
    <p>
      <id>8244</id>
      <name>
                        NAME OF ARTICLE
                    </name>
      <reference>622801</reference>
      <ean13>3232870162282</ean13>
      <stock>17</stock>
      <price>
        <tax>23</tax>
        <netto>9.2</netto>
        <brutto>11.32</brutto>
      </price>

例如,我尝试进行查询:

SELECT 
    *
FROM
OPENXML(@int, '/root/products/p', 2)
WITH
(   
    id int,
    name varchar(40),
    ean13 varchar(20)

)

并且有效。

enter image description here

现在我想使用另一个(嵌套的)列-价格(税,netto,brutto)。

我可以像这样修改查询(执行up)来做到这一点,它也可以工作:

SELECT 
    *
FROM
OPENXML(@int, '/root/products/p/price', 2)
WITH
(   
    id int '../id',
    name varchar(40) '../name',
    ean13 varchar(20) '../ean13',
    netto varchar(10),
    brutto varchar(10),
    tax varchar(10)
)

但是为什么这样的东西(钻down不能正常工作?它会将每行的价格值复制到所有行。可以钻down吗?

SELECT *
FROM OPENXML(@int, '/root/products/p', 2)
WITH ( id varchar(10), 
name varchar(40), 
ean13 varchar(20),
netto varchar(10) '../p/price/netto', 
brutto varchar(10) '//price/brutto', 
tax varchar(10) '//price/tax')

enter image description here

sql sql-server xml openxml drilldown
1个回答
1
投票
是否可以向下钻取?
© www.soinside.com 2019 - 2024. All rights reserved.