Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8720959
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 13, 20262026-06-13T07:08:36+00:00 2026-06-13T07:08:36+00:00

I have the following XML structure <?xml version=1.0 encoding=utf-8?> <DataItems> <DataItem> <ID>ID1</ID> <Metric1>Metric11Value</Metric1> <Metric2>Metric12Value</Metric2>

  • 0

I have the following XML structure

<?xml version="1.0" encoding="utf-8"?>
<DataItems>
    <DataItem>
        <ID>ID1</ID>
        <Metric1>Metric11Value</Metric1>
        <Metric2>Metric12Value</Metric2>
        <OptionalParameters>
           <OptionalParameter>
              <ParameterName>ParamName1</ParameterName>
              <ParameterValue>ParamValue1</ParameterValue>
              <ParameterUnits>ParamUnits1</ParameterUnits>
           <OptionalParamter> 
           <OptionalParameter>
              <ParameterName>ParamName2</ParameterName>
              <ParameterValue>ParamValue2</ParameterValue>
              <ParameterUnits>ParamUnits2</ParameterUnits>
           <OptionalParamter>
           <OptionalParameter>
              <ParameterName>ParamName3</ParameterName>
              <ParameterValue>ParamValue3</ParameterValue>
              <ParameterUnits>ParamUnits3</ParameterUnits>
           <OptionalParamter>
        </OptionalParamters>
    <DataItem>
        <ID>ID2</ID>
        <Metric1>Metric21Value</Metric1>
        <Metric2>Metric22Value</Metric2>
        <OptionalParameters>
           <OptionalParameter>
              <ParameterName>ParamName1</ParameterName>
              <ParameterValue>ParamValue1</ParameterValue>
              <ParameterUnits>ParamUnits1</ParameterUnits>
           <OptionalParamter> 
           <OptionalParameter>
              <ParameterName>ParamName2</ParameterName>
              <ParameterValue>ParamValue2</ParameterValue>
              <ParameterUnits>ParamUnits2</ParameterUnits>
           <OptionalParamter>
           <OptionalParameter>
              <ParameterName>ParamName3</ParameterName>
              <ParameterValue>ParamValue3</ParameterValue>
              <ParameterUnits>ParamUnits3</ParameterUnits>
           <OptionalParamter>
        </OptionalParamters>
    <DataItem>
</DataItems>

I would like to flatten it in a fashion that will give me a table row like

(ID, Metric1, Metric2, ParamName, ParamValue, ParamUnits)

The problem is that I don’t know how do peform the dynamic filtering I need in order to eliminate the invalid rows that result during the inner join or cross apply. So what I have essentially a total of (Number of Data Items)^2 of rows with all the permutations of parameters names, values, and units. I want to know how to filter out the invalid rows.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-13T07:08:37+00:00Added an answer on June 13, 2026 at 7:08 am

    I think your XML is messed up. You have a bunch of open XML elements that do not have matching close elements. If you fix that, then it is easy to get the flattened output you want:

    declare @idoc int, @xml varchar(max) = '
    <?xml version="1.0" encoding="utf-8"?>
    <DataItems>
      <DataItem>
        <ID>ID1</ID>
        <Metric1>Metric11Value</Metric1>
        <Metric2>Metric12Value</Metric2>
        <OptionalParameters>
          <OptionalParameter>
            <ParameterName>ParamName1</ParameterName>
            <ParameterValue>ParamValue1</ParameterValue>
            <ParameterUnits>ParamUnits1</ParameterUnits>
          </OptionalParameter>
        </OptionalParameters>
        <OptionalParameters>
          <OptionalParameter>
            <ParameterName>ParamName2</ParameterName>
            <ParameterValue>ParamValue2</ParameterValue>
            <ParameterUnits>ParamUnits2</ParameterUnits>
          </OptionalParameter>
        </OptionalParameters>
        <OptionalParameters>
          <OptionalParameter>
            <ParameterName>ParamName3</ParameterName>
            <ParameterValue>ParamValue3</ParameterValue>
            <ParameterUnits>ParamUnits3</ParameterUnits>
          </OptionalParameter>
        </OptionalParameters>
      </DataItem>
      <DataItem>
        <ID>ID2</ID>
        <Metric1>Metric21Value</Metric1>
        <Metric2>Metric22Value</Metric2>
        <OptionalParameters>
          <OptionalParameter>
            <ParameterName>ParamName1</ParameterName>
            <ParameterValue>ParamValue1</ParameterValue>
            <ParameterUnits>ParamUnits1</ParameterUnits>
          </OptionalParameter>
        </OptionalParameters>
        <OptionalParameters>
          <OptionalParameter>
            <ParameterName>ParamName2</ParameterName>
            <ParameterValue>ParamValue2</ParameterValue>
            <ParameterUnits>ParamUnits2</ParameterUnits>
          </OptionalParameter>
        </OptionalParameters>
        <OptionalParameters>
          <OptionalParameter>
            <ParameterName>ParamName3</ParameterName>
            <ParameterValue>ParamValue3</ParameterValue>
            <ParameterUnits>ParamUnits3</ParameterUnits>
          </OptionalParameter>
        </OptionalParameters>
      </DataItem>
    </DataItems>'
    
    exec sp_xml_preparedocument @idoc output, @xml
    
    select *
    from   openxml(@idoc, '/DataItems/DataItem/OptionalParameters/OptionalParameter', 1)
    with   (
              ID varchar(5) '../../ID', 
              Metric1 varchar(18) '../../Metric1', 
              Metric2 varchar(20) '../../Metric2', 
              ParamName varchar(20) 'ParameterName', 
              ParameterValue varchar(20) 'ParameterValue',
              ParameterUnits varchar(20) 'ParameterUnits'
            )
    
    exec sp_xml_removedocument @idoc
    go
    

    Which returns this:

    ID    Metric1            Metric2              ParamName            ParameterValue       ParameterUnits
    ----- ------------------ -------------------- -------------------- -------------------- --------------------
    ID1   Metric11Value      Metric12Value        ParamName1           ParamValue1          ParamUnits1
    ID1   Metric11Value      Metric12Value        ParamName2           ParamValue2          ParamUnits2
    ID1   Metric11Value      Metric12Value        ParamName3           ParamValue3          ParamUnits3
    ID2   Metric21Value      Metric22Value        ParamName1           ParamValue1          ParamUnits1
    ID2   Metric21Value      Metric22Value        ParamName2           ParamValue2          ParamUnits2
    ID2   Metric21Value      Metric22Value        ParamName3           ParamValue3          ParamUnits3
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have the following simplified XML structure: <?xml version="1.0" encoding="UTF-8" ?> <INVOIC02> <IDOC BEGIN="1">
I have the following simplified XML structure: <?xml version="1.0" encoding="UTF-8"?> <ExportData> <TransportHeader> <Timestamp>2011-01-16 06:00:33</Timestamp>
I have the following XML structure: <?xml version=1.0 encoding=utf-8 standalone=yes?> <Root xmlns:xsi=My Program> <NotRoot
I have an loaded an XML document with the following structure: <?xml version=1.0 encoding=UTF-8
I have xml file whose structure is defined with following xsd: <?xml version=1.0 encoding=utf-8?>
Say I have this following XML structure: <?xml version=1.0 encoding=UTF-8?> <main> <parent> <child1>some value</child1>
I have the following XML structure: <?xml version=1.0 encoding=utf-8?> <xml> <root> <Item> <taxids> <string>330</string>
I have the following xml structure : <?xml version=1.0 encoding=utf-8 ?> <nws> <url>http://cpa.hypotheses.org/feed</url> <url>http://news.ycombinator.com/rss</url>
I have an xml document with the following structure: <?xml version=1.0 encoding=UTF-8?> <items> <item>
I have an XML file of the following structure: <?xml version=1.0 encoding=utf-8?> <root> <ArrayOfLocationDTO

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.