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

SQLを使用したOracleの動的列

    非常に複雑ですが、変数構造を返すパイプラインテーブル関数 。パイプラインテーブル関数は、Oracle Data CartridgeインターフェースとAnyDataSetタイプの魔法を使用して、実行時に動的構造を返します。その後、それをテーブルであるかのように後続のSQLステートメントで使用できます。つまり

    SELECT *
      FROM TABLE( your_pipelined_function( p_1, p_2 ));
    

    同じサンプル実装について説明している参考資料がさらにいくつかあります

    • 動的SQLピボット
    • インターフェースアプローチの実装> 『Oracle Data Cartridge Developer's Guide』のセクション
    • Method4。 オープンソースのPL/SQLコードをダウンロードしてインストールした後、完全な実装を次に示します。

      --Create sample table.
      create table branch_data as
      select '100' BranchName,'1001010' CustomerNo from dual   UNION ALL 
      select '100' BranchName,'1001011' CustomerNo from dual   UNION ALL 
      select '103' BranchName,'1001012' CustomerNo from dual   UNION ALL 
      select '104' BranchName,'1001013' CustomerNo from dual   UNION ALL 
      select '104' BranchName,'1001014' CustomerNo from dual   UNION ALL 
      select '104' BranchName,'1001015' CustomerNo from dual   UNION ALL 
      select '105' BranchName,'1001016' CustomerNo from dual   UNION ALL 
      select '105' BranchName,'1001017' CustomerNo from dual   UNION ALL 
      select '106' BranchName,'1001018' CustomerNo from dual;
      
      --Create a dynamic pivot in SQL.
      select *
      from table(method4.dynamic_query(
          q'[
              --Create a select statement
              select
                  --The SELECT:
                  'select'||chr(10)||
                  --The column list:
                  listagg(
                      replace(q'!sum(case when BranchName = '#BRANCH_NAME#' then 1 else 0 end) "#BRANCH_NAME#"!', '#BRANCH_NAME#', BranchName)
                      , ','||chr(10)) within group (order by BranchName)||chr(10)||
                  --The FROM:
                  'from branch_data' v_sql
              from
              (
                  --Distinct BranchNames.
                  select distinct BranchName
                  from branch_data
              )
          ]'
      ));
      


    1. postgresqlアプリケーションでrailsで移行を実行した後のシーケンスに関する通知

    2. sqlplusを使用して大きなclobデータを取得します

    3. テキストベースのmysqlUIはありますか?

    4. postgresqlのorder_by、distinct、limitを使用したDjangoクエリ