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

Oracleでビューのピボット解除が機能しない

    Aleksejがすでに述べたように、Oracleサーバーバージョン<11gでは機能しません。

    これが古くて少し「厄介な」アプローチです...

    select key, c1, c2, c3 from t order by key ;
    
    KEY C1    C2    C3
    --- ----- ----- -----
    r1  v1    v2    v3
    r2  v1    v2
    r3  v1          v3
    r4  v1
    r5        v2    v3
    r6        v2
    r7              v3
    r8
    

    次のように、C1、C2、およびC3値の各行を1つの列の下の3行の値に変換できます。

    break on key skip 1 duplicates
    select key, 'C1' as source, c1 as val from t union all
    select key, 'C2' as source, c2 as val from t union all
    select key, 'C3' as source, c3 as val from t
    order by key, source ;
    
    KEY SOURCE VAL
    --- ------ -----
    r1  C1     v1
    r1  C2     v2
    r1  C3     v3
    r2  C1     v1
    r2  C2     v2
    r2  C3
    r3  C1     v1
    r3  C2
    r3  C3     v3
    r4  C1     v1
    r4  C2
    r4  C3
    r5  C1
    r5  C2     v2
    r5  C3     v3
    r6  C1
    r6  C2     v2
    r6  C3
    r7  C1
    r7  C2
    r7  C3     v3
    r8  C1
    r8  C2
    r8  C3
    

    C1、C2、またはC3のNULL値を持つ行が必要ない場合は、WHERE句を使用してそれらを除外できます。

    select key, 'C1' as source, c1 as val from t where c1 is not null union all
    select key, 'C2' as source, c2 as val from t where c2 is not null union all
    select key, 'C3' as source, c3 as val from t where c3 is not null
    order by key, source ;
    
    KEY SOURCE VAL
    --- ------ -----
    r1  C1     v1
    r1  C2     v2
    r1  C3     v3
    r2  C1     v1
    r2  C2     v2
    r3  C1     v1
    r3  C3     v3
    r4  C1     v1
    r5  C2     v2
    r5  C3     v3
    r6  C2     v2
    r7  C3     v3
    

    (c) http://oracle-knowledgeshare.blogspot。 de




    1. PostgreSQLのビルドシステムの作り方

    2. 複合PRIMARYKEYは、関連する列にNOTNULL制約を適用します

    3. VIsual StudioExpress2013にMySQLデータソースを追加する

    4. MySQLクエリを作成します(meta_key / meta_valueテーブル)