У меня есть следующий запрос:Как получить '' для каждой строки в listagg?
SELECT
ix.dt AS DT,
ix.UDBENCH_UDIDX AS UDFO,
' .' || REPLACE(REPLACE(ix.UDBENCH_UDIDX,' ',''),'IS','') AS PF_TICKER,
i.szbez AS PORTFOLIO_NAME,
ix.rm_generic_inst_type_l1,
ix.rm_generic_inst_type_l2,
ix.scd_sec_type,
m.ud_isin AS SECURITY_ID,
'%' AS POS_TYPE,
ix.sec_weight AS QUANTITY,
ix.sec_ccy,
ix.sec_price AS MKT_PRICE,
'' AS COST_PX,
'' AS POSITION_VALUE_AC,
'' AS POSITION_VALUE_FC,
m.ud_sedol AS UD_SEDOL,
m.ud_bbgid AS UD_ID_BB_UNIQUE,
m.ud_cusip AS UD_CUSIP,
m.ud_bbgid AS UD_BBGID,
m.inst_name AS INST_NAME,
ix.idas AS IDAS,
m.ud_scd_securityid AS UD_SCD_SECURITYID
FROM XXXX ix
INNER JOIN XXXXR i ON (i.udidx = ix.UDBENCH_UDIDX),
XXXXX m
WHERE ix.dt >= to_date(sdt_start,'DD.MM.YYYY')
AND ix.dt <= to_date(sdt_end,'DD.MM.YYYY')
AND ix.UDBENCH_UDIDX IN (select listagg(udfo,',') within group(ORDER BY udfo)
from XXXXX where pf_ticker is null)
AND i.szbez LIKE '%DFLT%'
AND ix.idas = m.idas;
Я хотел часть:
И ix.UDBENCH_UDIDX В (ВЫБРАТЬ listagg (udfo, '') внутри группы (ORDER BY udfo) от ХХХХХ, где pf_ticker равно нулю)
Эквивалент: ix.UDBENCH_UDIDX IN ('blal', 'УСК', BLC '), но это показывает ix.UDBENCH_UDIDX IN (blal, BLL, BLC) и результат моего запроса пустой стол, вы знаете, как установить listagg для получения этого результата ('blal', 'bll', blc 'вместо blal, bll, blc)? Thanks
Спасибо, что я уже пробовал вашу первую идею, но она не работает, поскольку я использую этот запрос в процедуре стропоскопа. Можете ли вы рассказать мне, как это сделать с jon, пожалуйста? –
@ProuProuTyu - что значит «не работает» означает - что происходит? Что вы имеете в виду о s обработанная процедура - вы генерируете инструкцию, а затем запускаете ее динамически, например. через 'выполнить немедленный'? Если да, то почему? (Кроме того, что такое объединение старого типа, XXXXX m' doing - это то же самое * таблица, что и ваш подзапрос, и почему он не коррелирует с 'ix' или' i'?)? –