2017-02-13 3 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

Смежные вопросы