2017-02-13 4 views
1

Ich habe den folgenden Code, um eine XML-Ausgabe zu generieren.Werte in ssms generierte XML-Tags

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

Die Ausgabe von diesem ist das XML unten und ist genau.

Das letzte Stück, das ich brauche, ist für Abonnenteninformationen, um aufzulisten, welcher Datensatz es innerhalb des Tags ist, so dass es wie folgt lautet.

<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

Verwendung "@docID" als Alias ​​... Sie haben einige Arbeit, um es zu tun. Testen Sie, indem Sie [Vorname] als "@docID" auswählen und Sie werden sehen, was ich meine. – manderson

Antwort

0

Versuchen Sie so etwas wie dieses ...

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

Sie haben nicht gesagt, was das Feld "Person001", "Person002" ist, also ersetzen Sie das Feld "docID" durch das Feld. – manderson

+0

Es gibt kein Feld person001. Ich wollte nur inkrementelle Werte. – lefeal