आप पिवट तालिका में इनपुट के रूप में सीधे गतिशील अभिव्यक्ति नहीं जोड़ सकते हैं, आप कुछ इस तरह की कोशिश कर सकते हैं जहां हम एक पीएल/एसक्यूएल ब्लॉक के माध्यम से एक चर में तालिका के सभी कॉलम पुनर्प्राप्त करते हैं और फिर इसे ओरेकल द्वारा अपेक्षित तरीके से पास करते हैं पिवट टेबल कार्यक्षमता।
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;
/