Bạn không thể thêm trực tiếp các biểu thức động làm đầu vào cho bảng Pivot, Bạn có thể thử một cái gì đó như thế này, trong đó chúng tôi truy xuất tất cả các cột của bảng trong một biến thông qua Khối PL / SQL và sau đó chuyển nó theo cách mà Oracle mong đợi Chức năng của bảng tổng hợp.
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;
/