У меня есть две таблицы ниже
SELECT * FROM TABLE_ONE
UNION
SELECT * FROM TABLE_TWO
Результат
ID|PRODUCTS |TOTAL_AMOUNT|
--|-----------|------------|
1|TABLE|CHAIR| 8|
1|TABLE|TV | 12|
2|CUP | 13|
2|PLATE | 14|
Теперь я хочу сделать listagg
, а также удалить дубликаты на oracle 19 c, поэтому я использую ниже запрос
SELECT ID, listagg(DISTINCT PRODUCTS, '|') within group (order by PRODUCTS) PRODUCTS, SUM(AMOUNT) FROM (
SELECT * FROM TABLE_ONE
UNION
SELECT * FROM TABLE_TWO
) GROUP BY ID
Результат, который я получаю, равен
ID|PRODUCTS |SUM(TOTAL_AMOUNT)|
--|--------------------|-----------------|
1|TABLE|CHAIR|TABLE|TV| 20|
2|CUP|PLATE | 27|
Результат, который я хочу, равен
ID|PRODUCTS |SUM(TOTAL_AMOUNT)|
--|--------------------|-----------------|
1|TABLE|CHAIR|TV | 20|
2|CUP|PLATE | 27|
Тестовые данные в db <> fiddle Хотя это oracle18c
, не поддерживает отчетливое в листаге, я использую oracle 19c