Sql server XML的T-SQL。如何获取每个度量的所有元素ID(样本数据)
我尝试提取每个度量值的所有元素ID值。这里的诀窍是,每个度量值的集合都不同,这在T-SQL中可能吗?我没有此xml的任何引用/模式 下面是示例数据,如AWC所示,ABA 10+有5个数据元素 所需的输出应如下所示:Sql server XML的T-SQL。如何获取每个度量的所有元素ID(样本数据),sql-server,xml,tsql,Sql Server,Xml,Tsql,我尝试提取每个度量值的所有元素ID值。这里的诀窍是,每个度量值的集合都不同,这在T-SQL中可能吗?我没有此xml的任何引用/模式 下面是示例数据,如AWC所示,ABA 10+有5个数据元素 所需的输出应如下所示: AWC collmeth A AWC eligpop 30125 AWC myyear 2018 etc.. 谢谢大家 尝试此XQuery,但失败 DECLARE @xml XML; SET @xml = (SELECT col FROM #x
AWC collmeth A
AWC eligpop 30125
AWC myyear 2018
etc..
谢谢大家
尝试此XQuery,但失败
DECLARE @xml XML;
SET @xml = (SELECT col FROM #x)
SELECT doc.value ('(value/text/())[1]', 'nvarchar(max)') AS 'key'
FROM @xml.nodes('/submission/component/data/measures/measure/data-elements/data-element') AS ref(doc)
XQuery[value]:附近出现语法错误,应为步骤表达式
请尝试以下方法。它处理默认名称空间以及一对多关系 T-SQL
请尝试以下方法。它处理默认名称空间以及一对多关系 T-SQL
是的,有可能。你试过什么,为什么没用?谢谢拉努!我使用XMLNAMESPACESDEFAULT处理示例。。我不能在这里用。我会做更多的家庭作业。这个ns不起作用,我认为它不是真的,谢谢如果你给我们展示你的尝试,那么我们可以解释为什么它不起作用。如果你不给我们看,我们就不能。更新了我的帖子,没有工作示例尝试了不同的路径组合。有没有可能我用“value”作为标记,而这是关键字?是的,这是可能的。你试过什么,为什么没用?谢谢拉努!我使用XMLNAMESPACESDEFAULT处理示例。。我不能在这里用。我会做更多的家庭作业。这个ns不起作用,我认为它不是真的,谢谢如果你给我们展示你的尝试,那么我们可以解释为什么它不起作用。如果你不给我们看,我们就不能。更新了我的帖子,没有工作示例尝试了不同的路径组合。有没有可能我把“value”作为一个标签,而这就是关键字?很好的答案,+1来自我这边!回答得很好,+1来自我这边!
DECLARE @xml XML = '<?xml version="1.0" encoding="utf-8"?>
<submission xmlns="https://www.mscbs.gob.es" guid="122134566-3344556-4334455-12343456" vendor-id="111111">
<metadata>
<version>40</version>
<timestamp/>
<sub-id>12122018</sub-id>
<year-end-date>12/31/2017</year-end-date>
<audit>true</audit>
</metadata>
<component type="GS">
<audit>
<measures>
<measure id="awc"> <reported>true</reported> </measure>
<measure id="aba"> <reported>true</reported> </measure>
</measures>
</audit>
<data>
<measures>
<measure id="awc" measure-version-id ="AWC_Version_Test">
<data-elements>
<data-element id="collmeth"> <value>A</value> </data-element>
<data-element id="eligpop"> <value>30125</value> </data-element>
<data-element id="myear"> <value>2018</value> </data-element>
<data-element id="nuadm"> <value>12925</value> </data-element>
<data-element id="nusup"> <value>0</value> </data-element>
</data-elements>
</measure>
<measure id="aba" measure-version-id ="ABA_Version_TEST">
<data-elements>
<data-element id="admexc"> <value>0</value> </data-element>
<data-element id="collmeth"> <value>H</value> </data-element>
<data-element id="den"> <value>147</value> </data-element>
<data-element id="elignu"> <value>11829</value> </data-element>
<data-element id="eligpop"> <value>21118</value> </data-element>
<data-element id="empexc"> <value>0</value> </data-element>
<data-element id="mrssnu"> <value>99</value> </data-element>
<data-element id="medexc"> <value>0</value> </data-element>
<data-element id="mrssize"> <value>147</value> </data-element>
<data-element id="myear"> <value>2018</value> </data-element>
<data-element id="nuadm"> <value>81</value> </data-element>
<data-element id="numed"> <value>36</value> </data-element>
<data-element id="nusup"> <value>18</value> </data-element>
<data-element id="overrate"> <value>0.02</value> </data-element>
<data-element id="subadded"> <value>0</value> </data-element>
<data-element id="veexc"> <value>0</value> </data-element>
</data-elements>
</measure>
</measures>
</data>
</component>
</submission>
'
SELECT @xml col INTO #x
SELECT * FROM #x
-- DDL and sample data population, start
DECLARE @xml XML = '<?xml version="1.0" encoding="utf-8"?>
<submission xmlns="https://www.mscbs.gob.es" guid="122134566-3344556-4334455-12343456"
vendor-id="111111">
<metadata>
<version>40</version>
<timestamp/>
<sub-id>12122018</sub-id>
<year-end-date>12/31/2017</year-end-date>
<audit>true</audit>
</metadata>
<component type="GS">
<audit>
<measures>
<measure id="awc">
<reported>true</reported>
</measure>
<measure id="aba">
<reported>true</reported>
</measure>
</measures>
</audit>
<data>
<measures>
<measure id="awc" measure-version-id="AWC_Version_Test">
<data-elements>
<data-element id="collmeth">
<value>A</value>
</data-element>
<data-element id="eligpop">
<value>30125</value>
</data-element>
<data-element id="myear">
<value>2018</value>
</data-element>
<data-element id="nuadm">
<value>12925</value>
</data-element>
<data-element id="nusup">
<value>0</value>
</data-element>
</data-elements>
</measure>
<measure id="aba" measure-version-id="ABA_Version_TEST">
<data-elements>
<data-element id="admexc">
<value>0</value>
</data-element>
<data-element id="collmeth">
<value>H</value>
</data-element>
<data-element id="den">
<value>147</value>
</data-element>
<data-element id="elignu">
<value>11829</value>
</data-element>
<data-element id="eligpop">
<value>21118</value>
</data-element>
<data-element id="empexc">
<value>0</value>
</data-element>
<data-element id="mrssnu">
<value>99</value>
</data-element>
<data-element id="medexc">
<value>0</value>
</data-element>
<data-element id="mrssize">
<value>147</value>
</data-element>
<data-element id="myear">
<value>2018</value>
</data-element>
<data-element id="nuadm">
<value>81</value>
</data-element>
<data-element id="numed">
<value>36</value>
</data-element>
<data-element id="nusup">
<value>18</value>
</data-element>
<data-element id="overrate">
<value>0.02</value>
</data-element>
<data-element id="subadded">
<value>0</value>
</data-element>
<data-element id="veexc">
<value>0</value>
</data-element>
</data-elements>
</measure>
</measures>
</data>
</component>
</submission>';
-- DDL and sample data population, end
;WITH XMLNAMESPACES (DEFAULT 'https://www.mscbs.gob.es')
SELECT c.value('@id','VARCHAR(10)') AS [measure-id]
, x.value('@id','VARCHAR(10)') AS [data-element-id]
, x.value('(value/text())[1]','VARCHAR(10)') AS [data-element-value]
FROM @xml.nodes('/submission/component/data/measures/measure') AS t(c)
CROSS APPLY t.c.nodes('data-elements/data-element') as f(x);
+------------+-----------------+--------------------+
| measure-id | data-element-id | data-element-value |
+------------+-----------------+--------------------+
| awc | collmeth | A |
| awc | eligpop | 30125 |
| awc | myear | 2018 |
| awc | nuadm | 12925 |
| awc | nusup | 0 |
| aba | admexc | 0 |
| aba | collmeth | H |
| aba | den | 147 |
| aba | elignu | 11829 |
| aba | eligpop | 21118 |
| aba | empexc | 0 |
| aba | mrssnu | 99 |
| aba | medexc | 0 |
| aba | mrssize | 147 |
| aba | myear | 2018 |
| aba | nuadm | 81 |
| aba | numed | 36 |
| aba | nusup | 18 |
| aba | overrate | 0.02 |
| aba | subadded | 0 |
| aba | veexc | 0 |
+------------+-----------------+--------------------+