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

oraclesqlの動的ピボット-手順

    ストアドプロシージャを呼び出すたびにピボット結果を挿入するテーブルがある場合は、次を使用できます。

    CREATE OR REPLACE PROCEDURE dynamic_pivot
    AS
      v_sql LONG       := NULL;
      v_statement LONG := NULL;
    BEGIN
      SELECT DISTINCT LISTAGG(''''
        || myLetter
        || ''' AS '
        || myLetter,',') WITHIN GROUP (
      ORDER BY myLetter) AS temp_in_statement
      INTO v_statement
      FROM
        (SELECT DISTINCT myLetter FROM test_data
        );
      v_sql := 'insert into pivot_table    
          select * from (SELECT myNumber, myLetter, myValue FROM test_data    
          )    
          PIVOT    
          (      
          SUM(myValue) AS val FOR myLetter IN (' || v_statement || ')    
          )';
      EXECUTE immediate v_sql;
    END;
    



    1. SQLでの制約の確認

    2. SQLServer2008の行の挿入と更新のタイムスタンプ

    3. Oracleでの時間のない日付タイプ

    4. 長い単一のSQLiteOpenHelperを、テーブルごとに1つずつ、複数のクラスに分割するにはどうすればよいですか。