Может кто-нибудь, дайте мне знать, как преобразовать приведенный ниже код Oracle из Oracle в базу данных Postgres,
select RTRIM(
XMLAGG(
XMLELEMENT(E,
(SEC_PROMOTION_ID ||'+'|| SEC_OFFER_ID),
'|'
).EXTRACT('//text()')
ORDER BY (SEC_PROMOTION_ID ||'+'|| SEC_OFFER_ID)
).GETCLOBVAL(),
'|'
) SEC_PROMO_OFFERS
from SSP2_PCAT.IE_FOR_SSP_STAGING;
В дополнение к вопросу Натана, как выглядит эта таблица и как вы хотите, чтобы результат выглядел?
Чтобы понять, что делает этот запрос, требуется образец данных XML. Он извлекает 2 значения из этих данных, которые, по-видимому, хранятся как clob. Два извлеченных значения объединяются, не совсем понятно, почему используется xmlagg (), затем используется rtrim (). Итак, чтобы помочь вам в дальнейшем, в дополнение к некоторым образцам данных предоставьте результат образца
Это не сервис преобразования кода. Когда вы попытались сделать это преобразование самостоятельно и столкнулись с трудностями. Пожалуйста, вернитесь и объясните проблему, с которой вы столкнулись, включая соответствующие части кода, и задайте конкретный вопрос, и мы постараемся помочь.


Это похоже на обходной путь для преодоления неприятного ограничения Oracle в 4000 байт для результата listagg().
В Postgres это намного проще
select string_agg(sec_promotion_id||'+'||sec_offer_id, '|' order by sec_promotion_id, sec_offer_id) as sec_promo_offers
from IE_FOR_SSP_STAGING
Большое спасибо, это ИДЕАЛЬНО и очень полезно в будущем!
@ user10531062 Если этот ответ решил ваш вопрос, пожалуйста, принимать, чтобы ваш вопрос был отмечен как решенный.
Вы очень мне помогли, сэр!
что ты уже испробовал? Сообщество SO будет рад помочь вам, но не сделает что-то для вас. Посмотрите эти советы, чтобы задать хороший вопрос: stackoverflow.com/help/how-to-ask