Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

kolom dinamis di Oracle menggunakan sql

Saya pikir mungkin, meskipun cukup rumit, untuk menulis fungsi tabel berpipa yang mengembalikan struktur variabel . Fungsi tabel pipa Anda akan menggunakan antarmuka Oracle Data Cartridge dan keajaiban tipe AnyDataSet untuk mengembalikan struktur dinamis saat runtime. Anda kemudian dapat menggunakannya dalam pernyataan SQL berikutnya seolah-olah itu adalah tabel, yaitu

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

Beberapa referensi lagi yang membahas implementasi sampel yang sama

  • Pivoting SQL Dinamis
  • Menerapkan Pendekatan Antarmuka bagian dari Panduan Pengembang Kartrid Data Oracle
  • Metode4. Setelah mengunduh dan menginstal kode PL/SQL open source, berikut adalah implementasi lengkapnya:

    --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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengelompokkan dengan 1 di SQL Server

  2. ORA-29908:tidak ada pemanggilan utama untuk operator tambahan

  3. Perbedaan waktu antar record

  4. RTRIM() Fungsi di Oracle

  5. mengganti tanda kurung siku dari string dengan fungsi Oracle REGEXP_REPLACE