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

テーブルとテーブルに格納されている列名をクエリします

    Peter Mのクエリを使用してSQLテキストを作成し、XMLのダークパワーを活用します。

    create table attributes (id, entity_id, table_name, column_name)
    as
    select 1, 3, 'VALUES_A', 'VALUE_1' from dual union all
    select 2, 2, 'VALUES_B', 'VALUE_3' from dual union all
    select 3, 2, 'VALUES_A', 'VALUE_2' from dual;
    
    create table values_a (entity_id, value_1, value_2, value_3)
    as
    select 1, 'Monday', 42, 'Green' from dual union all
    select 2, 'Sunday', 3000, 'Blue' from dual union all
    select 3, 'Wednesday', 1, 'Black' from dual;
    
    create table values_b (entity_id, value_1, value_2, value_3)
    as
    select 1, 'Tuesday', 26, 'Green' from dual union all
    select 2, 'Saturday', 3, 'Red' from dual union all
    select 3, 'Wednesday', 15, 'White' from dual;
    

    クエリ:

    with queries as
         ( select table_name, column_name, entity_id
                , 'select '|| column_name || ' as c from ' || table_name ||
                 ' where entity_id = ' || entity_id ||
                  case
                      when id = max_id then ''
                      else ' union all '
                  end as sqltext
           from 
               ( select a.*, max(a.id) over (order by id) max_id from attributes a ) )
    select table_name, column_name, entity_id
         , extractvalue(xmltype(dbms_xmlgen.getxml(sqltext)),'/ROWSET/ROW/C') as sql_result
    from   queries;
    

    結果:

    TABLE_NAME COLUMN_NAME  ENTITY_ID SQL_RESULT
    ---------- ----------- ---------- ---------------------------------------------------
    VALUES_A   VALUE_1              3 Wednesday
    VALUES_B   VALUE_3              2 Red
    VALUES_A   VALUE_2              2 3000
    


    1. MySQL5.7でネイティブパスワードを使用する方法

    2. Rails3.2.6と移行によるデータベースビューの作成

    3. これは、JSONをMySQLに保存するための合理的なユースケースですか?

    4. pgAdminを使用してPostgresqlテーブルデータをエクスポートする