[英]Struggling with extracting values from XML data (T-SQL)
这是文件底部的 XML 数据片段,显示了结束标记(这是一个巨大的文件):
<EncounterValidationResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.dhcs.ca.gov/EDS/DHCSResponse" ResponseVersion="1.2">
<EncounterFileName>EncounterFileName</EncounterFileName>
<EncounterSubmitterName>EncounterSubmitter</EncounterSubmitterName>
<EncounterSubmissionDate>2019-12-13T08:47:00.0000000-08:00</EncounterSubmissionDate>
<ValidationStatus>Accepted</ValidationStatus>
<Transactions>
<Transaction>
<IdentifierName>BatchNumber</IdentifierName>
<TransactionNumber>1277104</TransactionNumber>
<Identifiers>
<Envelope IdentifierName="OriginatorTransactionId" IdentifierValue="1277104-00" />
</Identifiers>
<Encounters>
<Encounter Status="Accepted">
<IdentifierType>TransactionIdentifier</IdentifierType>
<EncounterReferenceNumber>8129339999264</EncounterReferenceNumber>
<EncounterId>1934049991539</EncounterId>
<EncounterResponses>
<Response Severity="Warning">
<Id>0x0006D</Id>
<Description>MEDS indicates multiple records exist for this beneficiary</Description>
</Response>
<Response Severity="Warning">
<Id>0x00221</Id>
<Description>Prescriber Taxonomy (296) is either not provided or is invalid</Description>
</Response>
<Response Severity="Warning">
<Id>0x00249</Id>
<Description>Reason for Service Code (439-E4) is requested per the payer sheet but no value is provided/specified.</Description>
</Response>
<Response Severity="Warning">
<Id>0x00249</Id>
<Description>Professional Service Code (440-E5) is requested per the payer sheet but no value is provided/specified.</Description>
</Response>
<Response Severity="Warning">
<Id>0x00249</Id>
<Description>Result of Service Code (441-E6) is requested per the payer sheet but no value is provided/specified.</Description>
</Response>
</EncounterResponses>
</Encounter>
</Encounters>
</Transaction>
</Transactions>
</EncounterValidationResponse>
我正在尝试提取所有 Encounter Status 值、EncounterReferenceNumbers、Response Severity 值、Id 和 Description 值。 我希望查询返回五列,Encounter Status、Encounter Reference Number、Severity、Id 和 Description。
我已经在互联网上搜索了几天并尝试了几件事,但似乎无法得到它。
任何帮助表示赞赏!
像这样的演示:
declare @x XML='<EncounterValidationResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.dhcs.ca.gov/EDS/DHCSResponse" ResponseVersion="1.2">
<EncounterFileName>EncounterFileName</EncounterFileName>
<EncounterSubmitterName>EncounterSubmitter</EncounterSubmitterName>
<EncounterSubmissionDate>2019-12-13T08:47:00.0000000-08:00</EncounterSubmissionDate>
<ValidationStatus>Accepted</ValidationStatus>
<Transactions>
<Transaction>
<IdentifierName>BatchNumber</IdentifierName>
<TransactionNumber>1277104</TransactionNumber>
<Identifiers>
<Envelope IdentifierName="OriginatorTransactionId" IdentifierValue="1277104-00" />
</Identifiers>
<Encounters>
<Encounter Status="Accepted">
<IdentifierType>TransactionIdentifier</IdentifierType>
<EncounterReferenceNumber>8129339999264</EncounterReferenceNumber>
<EncounterId>1934049991539</EncounterId>
<EncounterResponses>
<Response Severity="Warning">
<Id>0x0006D</Id>
<Description>MEDS indicates multiple records exist for this beneficiary</Description>
</Response>
<Response Severity="Warning">
<Id>0x00221</Id>
<Description>Prescriber Taxonomy (296) is either not provided or is invalid</Description>
</Response>
<Response Severity="Warning">
<Id>0x00249</Id>
<Description>Reason for Service Code (439-E4) is requested per the payer sheet but no value is provided/specified.</Description>
</Response>
<Response Severity="Warning">
<Id>0x00249</Id>
<Description>Professional Service Code (440-E5) is requested per the payer sheet but no value is provided/specified.</Description>
</Response>
<Response Severity="Warning">
<Id>0x00249</Id>
<Description>Result of Service Code (441-E6) is requested per the payer sheet but no value is provided/specified.</Description>
</Response>
</EncounterResponses>
</Encounter>
</Encounters>
</Transaction>
</Transactions>
</EncounterValidationResponse>';
with xmlnamespaces (DEFAULT 'http://www.dhcs.ca.gov/EDS/DHCSResponse')
select t.n.value('@Status','nvarchar(100)') status,
t.n.value('EncounterReferenceNumber[1]','nvarchar(100)') EncounterReferenceNumber,
r.n.value('@Severity','nvarchar(100)') Severity,
r.n.value('Id[1]','nvarchar(100)') Id,
r.n.value('Description[1]','nvarchar(100)') Description
from @x.nodes('/EncounterValidationResponse/Transactions/Transaction/Encounters/Encounter') t(n)
cross apply t.n.nodes('EncounterResponses/Response') r(n);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.