Поскольку wm_concat устарела в oracle 12C, мне нужно изменить приведенный ниже запрос, я пытался использовать LISTAGG, но он не работал
SELECT WM_CONCAT(CLRR.CLNTNUM)
|| '#'
||WM_CONCAT(trim(trim(clnt.salutl)
|| ' '
|| trim(clnt.lgivname)
|| ' '
|| trim(clnt.lsurname)))
FROM ODSLIFEASIA.CLRRPF CLRR,
odslifeasia.clntpf clnt
WHERE clnt.clntnum = CLRR.CLNTNUM
AND CLRRROLE = 'LF'
AND clnt.validflag IN ('1', '3')
AND NVL(USED2B, 'X') <> 'U'
AND rownum <5;
Я пробовал приведенный ниже код, но он не работал:
SELECT LISTAGG(CLRR.CLNTNUM,',') within group (order by CLRR.CLNTNUM)--WM_CONCAT(CLRR.CLNTNUM)
|| '#'
||LISTAGG(trim(trim(clnt.salutl,',') within group (order by CLRR.clnt.salutl)--WM_CONCAT(trim(trim(clnt.salutl)
|| ' '
|| trim(clnt.lgivname)
|| ' '
|| trim(clnt.lsurname)))
FROM ODSLIFEASIA.CLRRPF CLRR,
odslifeasia.clntpf clnt
WHERE clnt.clntnum = CLRR.CLNTNUM
AND CLRRROLE = 'LF'
AND clnt.validflag IN ('1', '3')
AND NVL(USED2B, 'X') <> 'U'
AND rownum <5;
Я попробовал приведенный ниже код, но он не работал:
SELECT LISTAGG(CLRR.CLNTNUM,',') within group (order by CLRR.CLNTNUM)--WM_CONCAT(CLRR.CLNTNUM)
|| '#'
||LISTAGG(trim(trim(clnt.salutl,',') within group (order by CLRR.clnt.salutl)--WM_CONCAT(trim(trim(clnt.salutl)
|| ' '
|| trim(clnt.lgivname)
|| ' '
|| trim(clnt.lsurname)))
FROM ODSLIFEASIA.CLRRPF CLRR,
odslifeasia.clntpf clnt
WHERE clnt.clntnum = CLRR.CLNTNUM
AND CLRRROLE = 'LF'
AND clnt.validflag IN ('1', '3')
AND NVL(USED2B, 'X') <> 'U'
AND rownum <5;
Я не могу получить вывод с LISTAGG
, но с wm_concat
Я получаю:
53155087,53155088,53155089,53155090 # Андеррайтинг MR IONE, Андеррайтинг MR IONE, Андеррайтинг MR IONE, Андеррайтинг MR IONE
То же самое, что я ожидаю