Metin Bulak
Metin Bulak

Reputation: 747

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

Upvotes: 0

Views: 777

Answers (3)

d r
d r

Reputation: 7866

LISTAGG

Select ORDER_ID, LISTAGG(ID, ', ') WITHIN GROUP (ORDER BY ID)
From tbl
Group By ORDER_ID

Upvotes: 2

d r
d r

Reputation: 7866

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

Upvotes: 0

OldProgrammer
OldProgrammer

Reputation: 12179

listagg function to the rescue:

select order_id, listagg(id,', ')
from test
group by order_id

Upvotes: 1

Related Questions