This article describes method to aggregate and concatenate strings.
CREATE TABLE test_tbl ( grp_id NUMBER, elm_id NUMBER, elm_name VARCHAR2(25) ); INSERT INTO test_tbl SELECT 1, LEVEL, 'my name 1_'||LEVEL FROM dual CONNECT BY level < 5; INSERT INTO test_tbl SELECT 2, LEVEL, 'my name 2_'||LEVEL FROM dual CONNECT BY LEVEL < 5; INSERT INTO test_tbl SELECT 3, LEVEL, 'my name 3_'||LEVEL FROM dual CONNECT BY LEVEL < 1001; COMMIT;
We have following data
SELECT * FROM test_tbl
ORDER BY 1, 2;
GRP_ID ELM_ID ELM_NAME
---------- ---------- -------------------------
1 1 my name 1_1
1 2 my name 1_2
1 3 my name 1_3
1 4 my name 1_4
2 1 my name 2_1
2 2 my name 2_2
2 3 my name 2_3
2 4 my name 2_4
3 1 my name 3_1
...
3 1000 my name 3_1000
and purpose is to covert it to following layout
TEST_ID CONVERTED
-------- ------------------------------------------------
1 my name 1_1,my name 1_2,my name 1_3,my name 1_4
2 my name 2_1,my name 2_2,my name 2_3,my name 2_4
3 my name 3_1,... ,my name 3_1000
