'How to Convert multiple rows into one with comma as separator - Oracle db
I have an oracle table which has id and order_id columns. Table have same order_id with different id's.
How can I write a select for group same order_ids, and show in one line which seperated with comma;
Example;
ORDER_ID ID
623cdc7ff2f3603b06a283ff 8112686
623cdc7ff2f3603b06a283ff 8116869
623cdc7ff2f3603b06a28400 8117671
623ce4068c47be1532c4c53c 8118392
Select result should be like that;
ORDER_ID ID
623cdc7ff2f3603b06a283ff 8112686 , 8116869
623cdc7ff2f3603b06a28400 8117671
623ce4068c47be1532c4c53c 8118392
Solution 1:[1]
listagg function to the rescue:
select order_id, listagg(id,', ')
from test
group by order_id
Solution 2:[2]
Or, for older versions of Oracle you can use WM_CONCAT function. LISTAGG appeared at Oracle 11g Release 2.
WITH
tbl AS
(
SELECT '623cdc7ff2f3603b06a283ff' "ORDER_ID", '8112686' "ID" FROM DUAL UNION ALL
SELECT '623cdc7ff2f3603b06a283ff' "ORDER_ID", '8116869' "ID" FROM DUAL UNION ALL
SELECT '623cdc7ff2f3603b06a28400' "ORDER_ID", '8117671' "ID" FROM DUAL UNION ALL
SELECT '623ce4068c47be1532c4c53c' "ORDER_ID", '8118392' "ID" FROM DUAL
)
-- ----------------------------------------------------------------------------------
Select ORDER_ID, WMSYS.WM_CONCAT(ID)
From tbl
Group By ORDER_ID
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | OldProgrammer |
| Solution 2 | d r |
