Попробуйте:
Пример данных:
UNIQRECNUM COHORTS
---------- ---------
2 Metabolic
5 Cardio
6 Cardio
7 Gastro
8 Gastro
8 Cardio
9 Gastro
9 Gastro
9 Gastro
WITH T AS
(
SELECT 2 AS UNIQRECNUM,'Metabolic' AS COHORTS FROM DUAL
UNION ALL
SELECT 5 AS UNIQRECNUM,'Cardio' AS COHORTS FROM DUAL
UNION ALL
SELECT 6 AS UNIQRECNUM,'Cardio' AS COHORTS FROM DUAL
UNION ALL
SELECT 7 AS UNIQRECNUM,'Gastro' AS COHORTS FROM DUAL
UNION ALL
SELECT 8 AS UNIQRECNUM,'Gastro' AS COHORTS FROM DUAL
UNION ALL
SELECT 8 AS UNIQRECNUM,'Cardio' AS COHORTS FROM DUAL
UNION ALL
SELECT 9 AS UNIQRECNUM,'Gastro' AS COHORTS FROM DUAL
UNION ALL
SELECT 9 AS UNIQRECNUM,'Gastro' AS COHORTS FROM DUAL
UNION ALL
SELECT 9 AS UNIQRECNUM,'Gastro' AS COHORTS FROM DUAL
)
SELECT UNIQRECNUM,
LISTAGG(COHORTS,',') WITHIN GROUP (
ORDER BY COHORTS) OVER (PARTITION BY UNIQRECNUM) AS COHORTS
FROM T;
Вывод:
UNIQRECNUM COHORTS
---------- ----------------------
2 Metabolic
5 Cardio
6 Cardio
7 Gastro
8 Cardio,Gastro
8 Cardio,Gastro
9 Gastro,Gastro,Gastro
9 Gastro,Gastro,Gastro
9 Gastro,Gastro,Gastro