sql >> Databasteknik >  >> RDS >> Oracle

Analysera xmltype i tabell efter pivot xml

Du kan få landsvärdet med detta XPath-uttryck:

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

Och en liknande för befolkningen. Ge:

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 om du vill ha en kolumn för varje land måste du härifrån fortfarande pivot data för att få resultatet!

Vilket väcker frågan:

Varför använda en XML-pivot?

Om det beror på att du inte känner till landsnamnen och gör något som:

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

Detta har inte räddat dig något! Du måste fortfarande känna till landsnamnen för att få utdata som kolumner.




  1. MySQL-parameteriserade frågor

  2. SQLite till Oracle

  3. MySQL logiska operatorer

  4. Dela strängkolumnvärden