Как в запросе заменить wm_concat на listagg?
Никак не могу удачно заменить wmsys.wm_concat на wmsys.listagg.
select
'.' || wmsys.wm_concat(A.description) as EXPR
from
(
select
distinct 1 as "Z",
server_name || '.' || func_name as description
from
reglament
where
record_status in (3, 4)
and (
mstype_current <> 0
or upper(message) like '%ALERT%'
or upper(message) like '%ERROR%'
or upper(message) like '%ODBC%'
or upper(message) like '%REPAIR%'
)
and filial_id = 1111
UNION
select
B.X + B.Y + B.W as "Z",
B.description
from
(
select
distinct case when ALERT_PERIOD - (
LAST_PROCESSING_DATE - LAST_PROCESSING_DATE_OK
) 243600 < 0
and stype = 4
and SERVER_NAME not like 'CDBFUNC' then '1' else '0' end as "X",
case when ALERT_PERIOD - (
LAST_PROCESSING_DATE - LAST_PROCESSING_DATE_OK
) 243600 < 0
and stype = 4
and SERVER_NAME like 'CDBFUNC' then '1' else '0' end as "W",
case when ALERT_PERIOD /(24 * 3600) - (
LAST_PROCESSING_DATE - LAST_PROCESSING_DATE_OK
) < 0
and stype in (5, 6) then '1' else '0' end as "Y",
server_name || '.' || func_name as description
from
reglament
where
record_status in (3, 4)
and ALERT_ERRRESULT = '1'
and filial_id = 1111
) B
) A
where
A.Z = 1
);
Ответы (1 шт):
Автор решения: 0xdb
→ Ссылка
Посмотрите следующий пример и сделайте аналогичные изменения в запросе.
create table t1 as
select mod (level,2)+1 id, 'description '||level description
from dual connect by level<=5;
11g> select id, wm_concat (description) descriptionlist
from t1
group by id
/
ID DESCRIPTIONLIST
---------- --------------------------------------------------------------------------------
1 description 2,description 4
2 description 1,description 5,description 3
12c> select id, listagg (description, ',') within group (order by null) descriptionlist
from t1
group by id
/
ID DESCRIPTIONLIST
---------- --------------------------------------------------------------------------------
1 description 2,description 4
2 description 1,description 3,description 5