2017-02-13 46 views
1

我有以下代码来生成xml输出。ssms生成的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> 
+0

使用“@docID”作为别名...你就必须做一些工作吧。通过选择[FirstName]作为“@docID”进行测试,您将看到我的意思。 – manderson

回答

0

尝试这样的事情...

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') 
+0

你没有说出“Person001”,“Person002”字段是什么,所以用它替换了docID字段。 – manderson

+0

没有person001字段。我只是想要增量值。 – lefeal