Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server XML的T-SQL。如何获取每个度量的所有元素ID(样本数据)_Sql Server_Xml_Tsql - Fatal编程技术网

Sql server XML的T-SQL。如何获取每个度量的所有元素ID(样本数据)

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

我尝试提取每个度量值的所有元素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)

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                  |
+------------+-----------------+--------------------+