Możesz użyć LISTAGG
.
SELECT col_id,
LISTAGG(col_text, '|') WITHIN GROUP (ORDER BY col_text) text
FROM table1
GROUP BY col_id
Wyjście:
| COL_ID | TEXT |
----------------------------
| 111 | This|a|is|test. |
SQLFiddle
AKTUALIZUJ Jeśli chcesz uzyskać różne wartości tekstowe na liście
SELECT col_id,
LISTAGG(col_text, '|')
WITHIN GROUP (ORDER BY col_text) text
FROM
(
SELECT DISTINCT col_id, col_text
FROM table1
)
GROUP BY col_id
SQLFiddle