sql >> データベース >  >> RDS >> Oracle

ピボットxmlの後にxmltypeをテーブルに解析します

    次のXPath式を使用して国の値を取得できます:

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

    そして、人口のための同様のもの。与える:

    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     
    

    ただし、国ごとに列が必要な場合は、ここからpivotする必要があります。 結果を得るためのデータ!

    論点先取:

    XMLピボットを使用する理由

    国名がわからず、次のようなことをしていることが原因の場合:

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

    これはあなたに何も救いませんでした!列として出力を取得するには、国名を知っている必要があります。




    1. クラスター化された列定義と互換性のない列定義

    2. RubyonRailsでPostgreSQLでintervalを使用する

    3. 日付(時間)によるSQLグループ

    4. MySQLからelasticsearchへのデータのリアルタイム移行?