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

pivot tidak berfungsi saat menggunakan pilihan bersarang di SQL

Anda tidak dapat secara langsung menambahkan ekspresi dinamis sebagai input ke tabel Pivot, Anda dapat mencoba sesuatu seperti ini di mana kami mengambil semua kolom tabel dalam variabel melalui Blok PL/SQL dan kemudian meneruskannya dengan cara yang diharapkan oleh Oracle Fungsi Tabel Pivot.

SET serveroutput ON;


    DECLARE 
    sqlquery VARCHAR(32767);
    cols VARCHAR2(32767);
    BEGIN

      SELECT listagg('''' || column_name || '''',   ',') within
      GROUP(
      ORDER BY column_name)
      INTO cols
      FROM
        (SELECT DISTINCT column_name
         FROM all_tab_columns
         WHERE TABLE_NAME = 'TABLE_NAME')
      ;

      sqlquery := '      
    SELECT * FROM
    (
      SELECT table_name, column_name
      FROM ALL_TAB_COLUMNS
      WHERE
          table_name = ''TABLE_NAME''
    )
    PIVOT
    (
      MIN(column_name)
      FOR column_name IN ( 
            ''||cols||''
        )
      )
      ORDER BY table_name';

      DBMS_OUTPUT.PUT_LINE(sqlquery);

      EXECUTE IMMEDIATE sqlquery;

    END;
    /



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan- ORA-22835:Buffer terlalu kecil untuk konversi CLOB ke CHAR atau BLOB ke RAW

  2. Mendapatkan baris pertama dari LEFT OUTER JOIN

  3. Kesalahan saat memanggil Java dari PL/SQL

  4. Struktur dan Jenis Blok Oracle PLSQL

  5. Masukkan CLOB ke dalam database Oracle