【发布时间】:2017-05-18 09:36:52
【问题描述】:
我有以下要查询的 xml 以转换为平面表结构。
<RiskBoundReportProcess>
<RiskBoundReport>
<Policy key="Pol126446">
<LineOfBusinessCode>ISR</LineOfBusinessCode>
<AssignedIdentifier>
<RoleCode>Insured</RoleCode>
<Id>BP-1438</Id>
</AssignedIdentifier>
<RiskParticipationPercentIndicator>true</RiskParticipationPercentIndicator>
<PolicySection>
<PolicyProducer>
<RoleCode>Coverholder</RoleCode>
<Producer>
<OrganizationReferences organizationReference="Coverholder"/>
</Producer>
</PolicyProducer>
<PolicyProducer>
<RoleCode>Underwriter</RoleCode>
<Producer>
<Contact>
<PersonReferences>
<PersonName>
<FullName>Name</FullName>
</PersonName>
</PersonReferences>
</Contact>
</Producer>
</PolicyProducer>
<PolicyProducer>
<RoleCode>Broker</RoleCode>
<AssignedIdentifier>
<RoleCode>Broker</RoleCode>
<Id>112</Id>
</AssignedIdentifier>
<Producer>
<OrganizationReferences organizationReference="BrokerOrg112"/>
</Producer>
</PolicyProducer>
<PolicyProducer>
<RoleCode>LondonBroker</RoleCode>
<ProducerReferences producerReference="Binder1">
<ExternalIdentifier>
<TypeCode>UniqueMarketReference</TypeCode>
<Id>UMRGoesHere</Id>
</ExternalIdentifier>
<OrganizationReferences>
<OrganizationName>
<FullName>Partners Ltd</FullName>
</OrganizationName>
</OrganizationReferences>
<BindingAuthorityPeriod>
<StartDate>2014-05-01</StartDate>
<EndDate>2015-04-30</EndDate>
</BindingAuthorityPeriod>
</ProducerReferences>
<RiskParticipationPercent>1.0000</RiskParticipationPercent>
</PolicyProducer>
</PolicySection>
</Policy>
</RiskBoundReport>
</RiskBoundReportProcess>
到目前为止,我有两列。我现在想为以下节点中的 UniqueMarketReference 创建一个列
RiskBoundReportProcess/RiskBoundReport/Policy/PolicySection/PolicyProducer[RoleCode="LondonBroker"]/ProducerReferences/ExternalIdentifier/[TypeCode="UniqueMarketReference"]/Id
如何修改下面的 SQL 以包含它?
SELECT
Policy.value('@key', 'VARCHAR(50)') AS PolicyId,
Policy.value('LineOfBusinessCode[1]', 'VARCHAR(50)') AS LineOfBusinessCode
FROM @ACORDXML.nodes('/RiskBoundReportProcess/RiskBoundReport') AS RiskBoundReport(Nodes)
CROSS APPLY RiskBoundReport.Nodes.nodes('Policy') AS Policies(Policy)
我最终也会将 The Insured、Coverholer 和 Underwriter 作为专栏返回。
【问题讨论】:
标签: sql-server xml tsql xpath xquery