【问题标题】:values within ssms generated xml tagsssms 生成的 xml 标记中的值
【发布时间】:2017-02-13 19:24:19
【问题描述】:

我有以下代码来生成 xml 输出。

select
   [FirstName] as 'SubscriberName/FirstName',
   [Middle] as 'SubscriberName/MiddleName',
   LastName as 'SubscriberName/LastName',
   '123 fake street' as 'Address/Address1'
from chp_work_area.dbo.Students1099hc
FOR XML PATH('SubscriberInformation'), ROOT('Test')

这个的输出是下面的xml,而且是准确的。

<Test>
  <SubscriberInformation>
    <SubscriberName>
      <FirstName>BOB</FirstName>
      <MiddleName>G</MiddleName>
      <LastName>CHOI</LastName>
    </SubscriberName>
    <Address>
      <Address1>123 fake street</Address1>
    </Address>
  </SubscriberInformation>
  <SubscriberInformation>
    <SubscriberName>
      <FirstName>MOLLY</FirstName>
      <MiddleName>G</MiddleName>
      <LastName>MORTY</LastName>
    </SubscriberName>
    <Address>
      <Address1>123 fake street</Address1>
    </Address>
  </SubscriberInformation>
</Test>

我需要的最后一部分是订阅者信息,以列出它在标签内的哪条记录,因此它的内容如下。

    <Test>
    <SubscriberInformation docID="Person001">
    <SubscriberName>
        <FirstName>BOB</FirstName>
        <MiddleName>G</MiddleName>
        <LastName>CHOI</LastName>
    </SubscriberName>
    <Address>
        <Address1>123 fake street</Address1>
    </Address>
    </SubscriberInformation>
    <SubscriberInformation docID="Person002">
    <SubscriberName>
        <FirstName>MOLLY</FirstName>
        <MiddleName>G</MiddleName>
        <LastName>MORTY</LastName>
    </SubscriberName>
    <Address>
        <Address1>123 fake street</Address1>
    </Address>
    </SubscriberInformation>
</Test>

【问题讨论】:

  • 使用“@docID”作为别名......你必须对它做一些工作。通过选择 [FirstName] 作为“@docID”进行测试,您就会明白我的意思了。

标签: sql sql-server xml ssms


【解决方案1】:

试试这样的...

SELECT ROW_NUMBER() OVER(ORDER BY [FirstName],[Middle],[LastName] ASC) AS "@docID",
   [FirstName] as 'SubscriberName/FirstName',
   [Middle] as 'SubscriberName/MiddleName',
   LastName as 'SubscriberName/LastName',
   '123 fake street' as 'Address/Address1'
from chp_work_area.dbo.Students1099hc
FOR XML PATH('SubscriberInformation'), ROOT('Test')

【讨论】:

  • 你没有说“Person001”、“Person002”字段是什么,所以用那个替换docID字段。
  • 没有 person001 字段。我只是想要增量值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 2021-08-09
  • 2012-12-26
  • 1970-01-01
相关资源
最近更新 更多