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;
/