sql >> Database teknologi >  >> RDS >> Oracle

Parse xmltype i tabel efter pivot xml

Du kan få landeværdien med dette XPath-udtryk:

/PivotSet/item/column[@name="country"]

Og en lignende for befolkningen. Giver:

with x as (
  select xmltype ( 
'<PivotSet>
<item>
        <column name = "country">Ukraine</column>
        <column name = "population">12345</column>
    </item>
    <item>
        <column name = "country">Germany</column>
        <column name = "population">67891</column>
    </item>
</PivotSet>' 
) x from dual
)
select xt.* from x, xmltable (
  '/PivotSet/item'
  passing x.x 
  columns 
    country varchar2(100) 
      path 'column[@name="country"]',
    population int
      path 'column[@name="population"]'
) xt

COUNTRY   POPULATION   
Ukraine        12345         
Germany        67891     

Men hvis du vil have en kolonne for hvert land, skal du herfra stadig pivot dataene for at få resultatet!

Hvilket rejser spørgsmålet:

Hvorfor bruge en XML-pivot?

Hvis det er fordi du ikke kender landenavnene og laver noget som:

pivot xml ( 
  min ( population ) 
    for country in ( any ) 
)

Dette har ikke sparet dig for noget! Du skal stadig kende landenavnene for at få output som kolonner.




  1. Letvægts WordPress-installation:Sådan installeres WordPress med SQLite

  2. Sådan omdøbes en tabel i Microsoft Access

  3. MySQL MariaDB – Forespørgsel ved hjælp af Temp-tabel

  4. Er det god praksis at forlænge undervisningen?