DECLARE
SQLQRY CLOB;
COLS CLOB;
BEGIN
SELECT LISTAGG('''' || TITLE_ID || ''' as "TITLE_ID' ||'_'|| N || '"', ',') WITHIN GROUP (ORDER BY NULL)
INTO COLS
FROM (
WITH YOUR_TABLE AS( SELECT 'Fred Astire' NAME, 'tt0045537' TITLE_ID FROM DUAL
UNION
SELECT 'Fred Astire' NAME, 'tt0072038' TITLE_ID FROM DUAL
UNION
SELECT 'Fred Astire' NAME, 'tt0043044' TITLE_ID FROM DUAL
UNION
SELECT 'Fred Astire' NAME, 'tt0050419' TITLE_ID FROM DUAL
)
SELECT DISTINCT TITLE_ID, ROWNUM N FROM YOUR_TABLE
);
SQLQRY :=
'
SELECT * FROM
(
WITH YOUR_TABLE AS( SELECT ''Fred Astire'' NAME, ''tt0045537'' TITLE_ID FROM DUAL
UNION
SELECT ''Fred Astire'' NAME, ''tt0072038'' TITLE_ID FROM DUAL
UNION
SELECT ''Fred Astire'' NAME, ''tt0043044'' TITLE_ID FROM DUAL
UNION
SELECT ''Fred Astire'' NAME, ''tt0050419'' TITLE_ID FROM DUAL
)
SELECT *
FROM YOUR_TABLE
)
PIVOT
(
MAX(TITLE_ID) for TITLE_ID in (' || COLS || ')
)';
OPEN RC FOR SQLQRY;
DBMS_OUTPUT.PUT_LINE(SQLQRY);
EXECUTE IMMEDIATE SQLQRY;
END;