SQL Server XML query



我从大学起就没有处理过XML文档。我正在寻求帮助。我需要在SQL Server中编写一个XML查询,以输出这样的数据。

请注意,数据是从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>

我试过使用

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

但是我无法获得"Members"元素。据我所知,不能有多个根,那么我如何使"Members(成员("标记像"EnrollmentRequest(注册请求("标记一样发挥作用,以及如何使供应商id标记在文件中只出现一次?

您需要为您的会员信息使用子选择-类似于以下内容:

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

这会枚举所有成员,在<Member>元素中输出每个成员,然后将其"包装"到<EnrollmentRequest>根元素内的<Members>元素中。

最新更新