Sql server 从SQL选择查询输出复杂的xml

Sql server 从SQL选择查询输出复杂的xml,sql-server,xml,select,Sql Server,Xml,Select,我正在尝试从SQLServerSelect查询生成XML。我希望输出如下所示: <Root Version="3.3" UnitsOfMeasure="metric"> <Header> <HeaderID CountryCode="TH" LanguageCode="tha" Name="บริษัท เลิศวนิชออยล์ จำกัด สาขา 1" IDType="Local">88</HeaderID> </Header&

我正在尝试从SQLServerSelect查询生成XML。我希望输出如下所示:

<Root Version="3.3" UnitsOfMeasure="metric">
<Header>
    <HeaderID CountryCode="TH" LanguageCode="tha" Name="บริษัท เลิศวนิชออยล์ จำกัด สาขา 1" IDType="Local">88</HeaderID>
</Header>
<Item>
    <ItemID Name="Premium Unleaded">4021</ItemID>
    <SubItem>
        <SubItemID Name="T3">3</SubItemID>
        <TimeStamp>
            <Date>2015-09-19</Date>
            <Time>14:09</Time>
        </TimeStamp>
    </SubItem>
</Item>
<Item>
    <ItemID Name="Diesel">4041</ItemID>
    <SubItem>
        <SubItemID Name="T1">1</SubItemID>
        <TimeStamp>
            <Date>2015-09-19</Date>
            <Time>14:09</Time>
        </TimeStamp>
    </SubItem>
    <SubItem>
        <SubItemID Name="T7">7</SubItemID>
        <TimeStamp>
            <Date>2015-09-19</Date>
            <Time>14:09</Time>
        </TimeStamp>
    </SubItem>
</Item>
</Root>

88
4021
3.
2015-09-19
14:09
4041
1.
2015-09-19
14:09
7.
2015-09-19
14:09
数据库结构是

  • HeaderTable
    通过
    HeaderID
    外键连接到
    ItemTable
  • ItemTable
    通过
    HeaderID
    ItemID
    作为主键连接到
    SubItemTable

如果你需要更多的信息,请告诉我

请参考以下从SQL查询生成XML的示例

SELECT e.EmployeeID AS "@EmpID",
   c.FirstName AS "EmployeeName/FirstName",
   c.MiddleName AS "EmployeeName/MiddleName",
   c.EmailAddress,
   c.LastName AS "EmployeeName/LastName"
FROM HumanResources.Employee AS e
   INNER JOIN Person.Contact AS c
   ON c.ContactID = e.ContactID
WHERE c.FirstName = 'Rob'
FOR XML PATH ('Employee'), ROOT ('Employees'), ELEMENTS XSINIL;
生成的XML如下所示…同样,相应地更改代码..:-

<Employees xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Employee EmpID="4">
    <EmployeeName>
      <FirstName>Rob</FirstName>
      <MiddleName xsi:nil="true" />
    </EmployeeName>
    <EmailAddress>rob0@adventure-works.com</EmailAddress>
    <EmployeeName>
      <LastName>Walters</LastName>
    </EmployeeName>
  </Employee>
  <Employee EmpID="168">
    <EmployeeName>
      <FirstName>Rob</FirstName>
      <MiddleName>T</MiddleName>
    </EmployeeName>
    <EmailAddress>rob1@adventure-works.com</EmailAddress>
    <EmployeeName>
      <LastName>Caron</LastName>
    </EmployeeName>
  </Employee>
</Employees>

抢劫
rob0@adventure-works.com
沃尔特斯
抢劫
T
rob1@adventure-works.com
卡隆

我已经使用FOR XML命令非常成功地完成了这项工作。文档也很好。我在哪里可以找到文档?Microsoft文档是一个很好的起点,请在这里尝试@TobyJackson参考上面的代码,让我知道它是否有效!!!我希望最新更新的帖子能满足你的要求。