繁体   English   中英

努力从 XML 数据中提取值 (T-SQL)

[英]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.

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