... поскольку в столбце может быть неограниченное количество строк
Для любого запроса Oracle должен иметь возможность определять количество столбцов в наборе результатов. , а также имя и тип данных каждого, когда запрос анализируется. По этой причине не существует разумного способа отправить запрос, который будет возвращать набор результатов с произвольным числом столбцов, управляемых данными. (Для «неразумного» и действительно крутого способа см .: https://technology.amis.nl/2006/05/24/dynamic-sql-pivoting-stealing-antons-thunder/).
Большая часть этого ограничения связана с ответом на этот вопрос: предположим, что вы можете отправить запрос с помощью произвольное число столбцов, управляемых данными, как вы ожидаете, что вызывающие абоненты будут обрабатывать такой набор результатов?
Распространенный способ обработки таких требований, как у вас, - это написать запрос, который возвращает данные, которые в данный момент находятся в вашем LISTAGG
в качестве отдельных строк и используйте отчеты, такие как Qlik, OBIEE или все, что способно к перекрестным таблицам или сводным точкам в их интерфейсе.
Другим распространенным способом является жесткое ограничение количества столбцов. Например, если вы знаете, что ваши данные никогда не будут иметь более 30 столбцов, вы можете использовать условное агрегирование Гордона (см. Его ответ на этот вопрос).