简体   繁体   English

SQL Server XML查询

[英]SQL Server XML query

I haven't dealt with XML documents since college. 自大学以来我就没有处理过XML文档。 I'm looking for some assistance. 我正在寻找帮助。 I need to write a XML query in SQL Server that will output the data as such. 我需要在SQL Server中编写一个XML查询,该查询将这样输出数据。

Please note that the data is being pulled from just one table in SQL Server. 请注意,数据只是从SQL Server中的一个表中提取的。

<EnrollmentRequest>
    <Vendor id="string"/>
    <Members>
        <Member>  -- 1st Member Record
            <PayerPatientId>string</PayerPatientId>
            <PayerInsuranceId>string</PayerInsuranceId>
            <RequestTypeId>6427</RequestTypeId>
            <LastName>string</LastName>
            <FirstName>string</FirstName>
            <Gender>string</Gender>
            <DOB>string</DOB>
            <Zip>string</Zip>
            <Phone>string</Phone>
            <SSN>string</SSN>
            <City>string</City>
            <State>string</State>
            <DateOfServiceRange/>
            <PatientConsent>string</PatientConsent>
        </Member>
        <Member> -- 2nd Member Record
            <PayerPatientId>string</PayerPatientId>
            <PayerInsuranceId>string</PayerInsuranceId>
            <RequestTypeId>-2065</RequestTypeId>
            <LastName>string</LastName>
            <FirstName>string</FirstName>
            <Gender>string</Gender>
            <DOB>string</DOB>
            <Zip>string</Zip>
            <Phone>string</Phone>
            <SSN>string</SSN>
            <City>string</City>
            <State>string</State>
            <DateOfServiceRange/>
            <PatientConsent>string</PatientConsent>
        </Member>
    </Members>
</EnrollmentRequest>

I tried using 我尝试使用

FOR XML PATH('Member'),  
ROOT('EnrollmentRequest')

But I am unable to get the 'Members" element piece. It's my understanding there cannot be more than one root, so how can I get the 'Members' tag to function like the "EnrollmentRequest' tag and how can I get the vendor id tag to appear only once in the file? 但是我无法获得'Members'元素,我的理解是不能有多个根,因此我如何才能使'Members'标签像“ EnrollmentRequest”标签一样起作用以及如何获得供应商ID标签仅在文件中出现一次?

You need to use a sub-select for your member info - something like this: 您需要为您的会员信息使用子选择-像这样:

SELECT 
    'abc' AS 'Vendor/@Id',
    (SELECT
        m.ID,
        m.LastName,
        m.FirstName,
        m.ZIP,
        m.City
    FROM 
        dbo.YourMembersTable m
    FOR XML PATH('Member'), TYPE) AS 'Members'
FOR XML PATH(''), ROOT('EnrollmentRequest')

This enumerates all the members, outputs each in a <Member> element, and then "wraps" this into a <Members> element inside the <EnrollmentRequest> root element. 这将枚举所有成员,在<Member>元素中输出每个成员,然后将其“包装”到<EnrollmentRequest>根元素内的<EnrollmentRequest> <Members>元素中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM