I would liek to know how to concatnate several records from the same column from two different table in one. for instance below are my tables:
NOTE TABLE:
INVOICE NOTES
1000 REPLACE PUMP
1000 REPLACE OIL
1000 REPLACE FILTER
1111 WO# 123
1111 REPLACE GASKET
1234 REPLACE OIL
INVOICE TABLE:
INVOICE AMOUNT
1000 100
1111 50
1234 20
I can run this query and the result:
SELECT INV.INVOICE, INV.AMOUNT FROM INVOICE INV
INNER JOIN NOTES ON INV.INVOICE = NOTES.INVOICE
but I would like to combine the Notes for each invoice in one column in my result set. For examples my result should look like this
INVOICE AMOUNT NOTES
1000 100 REPLACE PUMP, REPLACE OIL, REPLACE FILTER
1111 50 WO# 123,REPLACE GASKET
1234 20 REPLACE OIL
query
with inv_notes as
(select 1000 as INVOICE, 'REPLACE PUMP' as notes from dual union all
select 1000, 'REPLACE PUMP' from dual union all
select 1000, 'REPLACE OIL' from dual union all
select 1000, 'REPLACE FILTER' from dual union all
select 1111, 'WO# 123' from dual union all
select 1111, 'REPLACE GASKET' from dual union all
select 1234, 'REPLACE OIL' from dual
)
,
inv_amount as (
select 1000 as INVOICE, 100 AMOUNT from dual union all
select 1111, 50 from dual union all
select 1234, 20 from dual)
select a.invoice, a.amount, listagg(n.notes, ',') WITHIN GROUP (ORDER BY a.invoice, a.amount) notes
from inv_notes n
inner join inv_amount a on n.invoice = a.invoice
group by a.invoice, a.amount
result
1 1000 100 REPLACE FILTER,REPLACE OIL,REPLACE PUMP,REPLACE PUMP
2 1111 50 REPLACE GASKET,WO# 123
3 1234 20 REPLACE OIL
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.