<legend id='C90EQ'><style id='C90EQ'><dir id='C90EQ'><q id='C90EQ'></q></dir></style></legend>
    1. <small id='C90EQ'></small><noframes id='C90EQ'>

      <i id='C90EQ'><tr id='C90EQ'><dt id='C90EQ'><q id='C90EQ'><span id='C90EQ'><b id='C90EQ'><form id='C90EQ'><ins id='C90EQ'></ins><ul id='C90EQ'></ul><sub id='C90EQ'></sub></form><legend id='C90EQ'></legend><bdo id='C90EQ'><pre id='C90EQ'><center id='C90EQ'></center></pre></bdo></b><th id='C90EQ'></th></span></q></dt></tr></i><div id='C90EQ'><tfoot id='C90EQ'></tfoot><dl id='C90EQ'><fieldset id='C90EQ'></fieldset></dl></div>

          <bdo id='C90EQ'></bdo><ul id='C90EQ'></ul>
        <tfoot id='C90EQ'></tfoot>

        XML 解析 - SQL Server

        时间:2023-06-07
        1. <small id='yySIq'></small><noframes id='yySIq'>

            • <i id='yySIq'><tr id='yySIq'><dt id='yySIq'><q id='yySIq'><span id='yySIq'><b id='yySIq'><form id='yySIq'><ins id='yySIq'></ins><ul id='yySIq'></ul><sub id='yySIq'></sub></form><legend id='yySIq'></legend><bdo id='yySIq'><pre id='yySIq'><center id='yySIq'></center></pre></bdo></b><th id='yySIq'></th></span></q></dt></tr></i><div id='yySIq'><tfoot id='yySIq'></tfoot><dl id='yySIq'><fieldset id='yySIq'></fieldset></dl></div>

              <tfoot id='yySIq'></tfoot>
                <bdo id='yySIq'></bdo><ul id='yySIq'></ul>

                  <tbody id='yySIq'></tbody>
                  <legend id='yySIq'><style id='yySIq'><dir id='yySIq'><q id='yySIq'></q></dir></style></legend>
                  本文介绍了XML 解析 - SQL Server的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  我有一个如下所示的 XML:

                  I have an XML that looks like below:

                  declare @xml xml = '<Margins >
                  <Margin type="type1" currencyCode="currencyCode1">
                    <MarginRevenue>1.1</MarginRevenue>
                    <MarginRevenue>1.2</MarginRevenue>
                    <MarginRevenue>1.3</MarginRevenue>
                    <MarginCost>2.1</MarginCost>
                    <MarginCost>2.2</MarginCost>
                    <MarginCost>2.3</MarginCost>
                    <MarginValue>3.1</MarginValue>
                    <MarginValue>3.2</MarginValue>
                    <MarginValue>3.3</MarginValue>
                  </Margin>
                  <Margin type="type2" currencyCode="currencyCode2">
                    <MarginRevenue>1.4</MarginRevenue>
                    <MarginRevenue>1.5</MarginRevenue>
                    <MarginRevenue>1.6</MarginRevenue>
                    <MarginCost>2.4</MarginCost>
                    <MarginCost>2.5</MarginCost>
                    <MarginCost>2.6</MarginCost>
                    <MarginValue>3.4</MarginValue>
                    <MarginValue>3.5</MarginValue>
                    <MarginValue>3.6</MarginValue>
                  </Margin>
                  <Margin type="type3" currencyCode="currencyCode3">
                    <MarginRevenue>1.7</MarginRevenue>
                    <MarginRevenue>1.8</MarginRevenue>
                    <MarginRevenue>1.9</MarginRevenue>
                    <MarginCost>2.7</MarginCost>
                    <MarginCost>2.8</MarginCost>
                    <MarginCost>2.9</MarginCost>
                    <MarginValue>3.7</MarginValue>
                    <MarginValue>3.8</MarginValue>
                    <MarginValue>3.9</MarginValue>
                  </Margin>
                  

                  '

                  SELECT
                  [Margin_Revenue] = N.value('(MarginRevenue)[1]', 'decimal(15,5)')
                  ,[Margin_Cost] = N.value('(MarginCost)[1]', 'decimal(15,5)')
                  ,[Margin_Value] = N.value('(MarginValue)[1]', 'decimal(15,5)')
                  FROM
                  @xml.nodes('Margins/Margin') AS X(N)
                  

                  我的要求是获取所有 , 并且带有 Path nodes('Margins/Margin') AS X(N).到目前为止,我只得到下面这实际上是每个 Margin 的第一条记录:

                  My requirement is to get all the , and but with Path nodes('Margins/Margin') AS X(N). As of now, I'm getting below only which is actually the first record of each Margin:

                      Margin_Revenue  Margin_Cost  Margin_Value
                      1.10000         2.10000      3.10000
                      1.40000         2.40000      3.40000
                      1.70000         2.70000      3.70000
                  

                  推荐答案

                  1:n 处有 1:n 数据 数据位于 .您需要通过 APPLY 使用 .nodes() 两次.

                  There is 1:n data at <Margin> and again 1:n data at <MarginRevenue>. You need to use .nodes() twice via APPLY.

                  declare @xml xml = '<Margins>
                      <Margin type="type1" currencyCode="currencyCode1">
                        <MarginRevenue>1.1</MarginRevenue>
                        <MarginRevenue>1.2</MarginRevenue>
                        <MarginRevenue>1.3</MarginRevenue>
                      </Margin>
                      <Margin type="type2" currencyCode="currencyCode2">
                        <MarginRevenue>1.4</MarginRevenue>
                        <MarginRevenue>1.5</MarginRevenue>
                        <MarginRevenue>1.6</MarginRevenue>
                      </Margin>
                      <Margin type="type3" currencyCode="currencyCode3">
                        <MarginRevenue>1.7</MarginRevenue>
                        <MarginRevenue>1.8</MarginRevenue>
                        <MarginRevenue>1.9</MarginRevenue>
                        </Margin>
                      </Margins>'
                  
                  SELECT
                   [Margin_Type]         = Marg.value('@type', 'varchar(100)') 
                  ,[Margin_currencyCode] = Marg.value('@currencyCode', 'varchar(100)')
                  ,[Revenue_Value]       = Rev.value('text()[1]','decimal(15,5)') 
                  FROM
                  @xml.nodes('Margins/Margin') AS A(Marg)
                  OUTER APPLY Marg.nodes('MarginRevenue') B(Rev);
                  

                  结果

                  Type    currencyCode    Revenue_Value
                  -------------------------------------
                  type1   currencyCode1   1.10000
                  type1   currencyCode1   1.20000
                  type1   currencyCode1   1.30000
                  type2   currencyCode2   1.40000
                  type2   currencyCode2   1.50000
                  type2   currencyCode2   1.60000
                  type3   currencyCode3   1.70000
                  type3   currencyCode3   1.80000
                  type3   currencyCode3   1.90000
                  

                  这篇关于XML 解析 - SQL Server的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:对于 XML 显式 下一篇:如何从 SQL Server 获取 ROOT 节点名称

                  相关文章

                  最新文章

                      <i id='3izIS'><tr id='3izIS'><dt id='3izIS'><q id='3izIS'><span id='3izIS'><b id='3izIS'><form id='3izIS'><ins id='3izIS'></ins><ul id='3izIS'></ul><sub id='3izIS'></sub></form><legend id='3izIS'></legend><bdo id='3izIS'><pre id='3izIS'><center id='3izIS'></center></pre></bdo></b><th id='3izIS'></th></span></q></dt></tr></i><div id='3izIS'><tfoot id='3izIS'></tfoot><dl id='3izIS'><fieldset id='3izIS'></fieldset></dl></div>
                      <tfoot id='3izIS'></tfoot>
                      • <bdo id='3izIS'></bdo><ul id='3izIS'></ul>

                      <small id='3izIS'></small><noframes id='3izIS'>

                    1. <legend id='3izIS'><style id='3izIS'><dir id='3izIS'><q id='3izIS'></q></dir></style></legend>