У меня есть сценарий. Мне нужно использовать listagg
в 2 столбца, чтобы разделить запятую данных (,). У меня есть псевдонимы в запросе, поэтому я не могу использовать group by
, что является обязательным в listagg. Чтобы решить эту проблему, я беру вывод во внешний запрос и использую там listagg и группирую столбец.
Проблема в том, что мои данные отсортированы по столбцу, который отсутствует в предложении select
. Как я могу поддерживать порядок данных внутреннего запроса во внешнем запросе.
Или
Есть ли возможность использовать столбец во внешнем запросе, чтобы использовать его для заказа, но не использовать в предложении select
.
Мой запрос похож на
select A+10 AA,
B*20 BB,
CC ,
DD
from Tab1 order by M;
когда я использую listagg, я изменил запрос
select
AA,
BB
listagg(CC,',') within group(order by CC),
listagg(DD,',') within group(order by DD)
from
(
select A+10 AA,
B*20 BB,
CC ,
DD
from Tab1 order by M
)
group by AA,BB
Если вы четко видите, наш внутренний запрос отсортирован по столбцу M, которого нет в предложении select. Как я могу сохранить order by M
без использования внешнего запроса или, если я возьму столбец M во внешнем запросе, как я могу исключить результат.
Или есть возможность использования listagg
во внутреннем запросе, когда у меня есть псевдонимы