【发布时间】:2021-07-03 14:46:33
【问题描述】:
我需要帮助来处理自定义 XML。我在下面摘录了一段我希望得到所有用蓝线标记的值的地方。我很困惑,因为每个属性的属性可能不同。我还附上了完整的运行代码进行测试。
我尝试了我知道的不同方法,但供应商更改了架构,现在我无法弄清楚。
非常感谢。
也希望获得所有这些价值
用蓝线标记:
我刚刚得到这个运行代码,但还不能正常工作,
DECLARE @xml XML = ('<Submission xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Measures>
<A100 versionID="A01">
<Metadata>
<TY_Year>2020</TY_Year>
<Benefit>true</Benefit>
</Metadata>
<AnnualCount>
<Stratification>
<Pool>11-14</Pool>
</Stratification>
<Data>
<RegTotal>13071</RegTotal>
<CountA>542</CountA>
</Data>
</AnnualCount>
<AnnualCount>
<Stratification>
<Pool>15-18</Pool>
</Stratification>
<Data>
<RegTotal>12016</RegTotal>
<CountA>458</CountA>
</Data>
</AnnualCount>
<AnnualCount>
<Stratification>
<Pool>19-20</Pool>
</Stratification>
<Data>
<RegTotal>4591</RegTotal>
<CountA>129</CountA>
</Data>
</AnnualCount>
<AnnualCount>
<Stratification>
<Pool>2-3</Pool>
</Stratification>
<Data>
<RegTotal>5649</RegTotal>
<CountA>127</CountA>
</Data>
</AnnualCount>
<AnnualCount>
<Stratification>
<Pool>4-6</Pool>
</Stratification>
<Data>
<RegTotal>8995</RegTotal>
<CountA>366</CountA>
</Data>
</AnnualCount>
<AnnualCount>
<Stratification>
<Pool>7-10</Pool>
</Stratification>
<Data>
<RegTotal>11818</RegTotal>
<CountA>546</CountA>
</Data>
</AnnualCount>
</A100>
<Z200 versionID="B12">
<Metadata>
<TY_Year>2020</TY_Year>
<Benefit>true</Benefit>
</Metadata>
<Z200_Ratio>
<Stratification>
<Pool>12-18</Pool>
</Stratification>
<Data>
<RegTotal>349</RegTotal>
<X5>12</X5>
<CountA>269</CountA>
<CountB>0</CountB>
</Data>
</Z200_Ratio>
<Z200_Ratio>
<Stratification>
<Pool>19-50</Pool>
</Stratification>
<Data>
<RegTotal>911</RegTotal>
<X5>192</X5>
<CountA>520</CountA>
<CountB>0</CountB>
</Data>
</Z200_Ratio>
<Z200_Ratio>
<Stratification>
<Pool>5-11</Pool>
</Stratification>
<Data>
<RegTotal>424</RegTotal>
<X5>20</X5>
<CountA>329</CountA>
<CountB>0</CountB>
</Data>
</Z200_Ratio>
<Z200_Ratio>
<Stratification>
<Pool>51-64</Pool>
</Stratification>
<Data>
<RegTotal>590</RegTotal>
<X5>456</X5>
<CountA>336</CountA>
<CountB>0</CountB>
</Data>
</Z200_Ratio>
</Z200>
</Measures>
</Submission>')
;WITH XMLNAMESPACES (DEFAULT 'http://www.ncqa.org/ns/2006/idss/hedis')
SELECT c.value('@id','VARCHAR(10)') AS msr
-- , x.value('@id','VARCHAR(10)') AS element
-- , x.value('(value/text())[1]','VARCHAR(10)') AS Val
--INTO #t
FROM @xml.nodes('/submission/measures') AS t(c)
CROSS APPLY t.c.nodes('/submission/measures') as f(x);
【问题讨论】:
-
你试过什么?为什么它不起作用?
-
在提出问题时,您需要提供一个可重现的最小示例。请参考以下链接:stackoverflow.com/help/minimal-reproducible-example 请提供以下内容: (1) DDL 和样本数据填充,即 CREATE table(s) 加上 INSERT T-SQL 语句。 (2) 你需要做什么,即逻辑和你的代码尝试在 T-SQL 中实现它。 (3) 期望的输出,基于上面#1 中的样本数据。 (4) 你的 SQL Server 版本 (SELECT @@version;)
-
感谢所有 cmets,我添加了我的自我包含测试 sn-p
-
@Mich28,##3-4 仍然不见了。
-
#3。输出值在 #4 发布的图片上突出显示。 Microsoft SQL Server 2017 (RTM-CU22) (KB4577467) Tx YItzhak
标签: sql-server xml tsql xquery