开发者社区> 问答> 正文

努力从XML数据中提取值(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>

我正在尝试提取所有“遇到状态”值,“ EncounterReferenceNumbers”,“响应严重性”值,“ Id”和“描述”值。我希望查询返回五列,“遇到状态”,“遇到参考号”,“严重性”,“标识”和“描述”。

我已经在互联网上搜索了几天,并尝试了几件事,但似乎无法理解。

任何帮助表示赞赏!

展开
收起
Puppet 2020-01-04 11:04:19 486 0
1 条回答
写回答
取消 提交回答
  • 像这样的演示:

    
    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);
    
    2020-01-04 11:04:45
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载