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

    • <bdo id='BkyL8'></bdo><ul id='BkyL8'></ul>

  • <legend id='BkyL8'><style id='BkyL8'><dir id='BkyL8'><q id='BkyL8'></q></dir></style></legend>
  • <tfoot id='BkyL8'></tfoot>
  • <small id='BkyL8'></small><noframes id='BkyL8'>

        来自一个透视表的 SQL FOR XML 多级

        时间:2023-06-07

        <small id='HkD4m'></small><noframes id='HkD4m'>

        <legend id='HkD4m'><style id='HkD4m'><dir id='HkD4m'><q id='HkD4m'></q></dir></style></legend>

                <tbody id='HkD4m'></tbody>
              <i id='HkD4m'><tr id='HkD4m'><dt id='HkD4m'><q id='HkD4m'><span id='HkD4m'><b id='HkD4m'><form id='HkD4m'><ins id='HkD4m'></ins><ul id='HkD4m'></ul><sub id='HkD4m'></sub></form><legend id='HkD4m'></legend><bdo id='HkD4m'><pre id='HkD4m'><center id='HkD4m'></center></pre></bdo></b><th id='HkD4m'></th></span></q></dt></tr></i><div id='HkD4m'><tfoot id='HkD4m'></tfoot><dl id='HkD4m'><fieldset id='HkD4m'></fieldset></dl></div>
                <tfoot id='HkD4m'></tfoot>
                • <bdo id='HkD4m'></bdo><ul id='HkD4m'></ul>
                  本文介绍了来自一个透视表的 SQL FOR XML 多级的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  我一直在尝试使用 FOR XML 来执行以下操作,但没有成功.

                  I've been trying to use FOR XML without success to do the following.

                  源表:

                  Country            | ID      | 1950        | 1955
                  -----------------------------------------------------
                  Country 1          | 1       | 2.43        | 2.55
                  Country 2          | 2       | 4.54        | 42.15
                  

                  所需的输出:

                  <locations>
                    <location>
                      <loc name='Country 1' id='1' />
                      <dub>
                        <data year='1950' value='2.43' />
                        <data year='1955' value='2.55' />
                      </dub>
                    </location>
                    <location>
                      <loc name='Country 2' id='2' />
                      <dub>
                        <data year='1950' value='4.54' />
                        <data year='1955' value='42.15' />
                      </dub>
                    </location>
                  </locations>
                  

                  是否有必要为配音元素取消旋转?我想要最简单的 SQL 查询.我认为 FOR XML 太难用了.您应该能够仅在列名上使用简单的 XPath 来指定层次结构,但它不会接受,例如,[dub/data/@year=1955/@value] 作为列名的名称列 [1950].

                  Will it be necessary to unpivot for the dub element? I wanted the simplest SQL query possible. I think FOR XML is too difficult to use. You should be able to specify the hierarchy just using simple XPath on column names but it won't accept, for example, [dub/data/@year=1955/@value] as the name of the column [1950].

                  推荐答案

                  SQL Fiddle

                  MS SQL Server 2012 架构设置:

                  create table YourTable
                  (
                    Country varchar(20),
                    ID int,
                    [1950] numeric(5,2),
                    [1955] numeric(5,2)
                  )
                  
                  insert into YourTable values
                  ('Country 1',           1,        2.43,         2.55),
                  ('Country 2',           2,        4.54,         42.15)
                  

                  查询 1:

                  select T.Country as 'loc/@name',
                         T.ID as 'loc/@id',
                         (
                           select 1950 as 'data/@year',
                                  T.[1950] as 'data/@value',
                                  null,
                                  1955 as 'data/@year',
                                  T.[1955] as 'data/@value'
                           for xml path(''), type
                         ) as dub
                  from YourTable as T
                  for xml path('location'), root('locations'), type
                  

                  结果:

                  <locations>
                    <location>
                      <loc name="Country 1" id="1" />
                      <dub>
                        <data year="1950" value="2.43" />
                        <data year="1955" value="2.55" />
                      </dub>
                    </location>
                    <location>
                      <loc name="Country 2" id="2" />
                      <dub>
                        <data year="1950" value="4.54" />
                        <data year="1955" value="42.15" />
                      </dub>
                    </location>
                  </locations>
                  

                  这篇关于来自一个透视表的 SQL FOR XML 多级的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:在sql脚本中的两个XML文件之间交换数据? 下一篇:如何创建在属性值验证方面不同的 XSD?

                  相关文章

                  最新文章

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

                    • <bdo id='CJOPT'></bdo><ul id='CJOPT'></ul>

                    <legend id='CJOPT'><style id='CJOPT'><dir id='CJOPT'><q id='CJOPT'></q></dir></style></legend>

                      <tfoot id='CJOPT'></tfoot>

                      <small id='CJOPT'></small><noframes id='CJOPT'>