Я новичок в Oracle и надеюсь, что кто-то здесь может помочь мне с этим.
У меня есть Select, который возвращает следующее без агрегирования строк:
текущий вывод
Моя проблема заключается в том, что я могу иметь несколько строк для определенных идентификаторов в первом столбце, тогда как мне нужна только одна строка для каждого идентификатора, например:
обязательный вывод
Select Distinct
в моем случае не подходит, а Listag
не позволяет использовать достаточно символов для второго столбца.
После некоторых исследований я думаю, что Xmlagg - это именно то, что мне здесь нужно, но я не могу заставить это работать и всегда получаю здесь ошибку, поэтому я думаю, что пишу это неправильно.
Последняя ошибка:
ORA-00931: missing identifier
Может ли кто-нибудь показать мне, как правильно написать это?
Мой запрос (сокращенный):
ALTER SESSION ENABLE PARALLEL QUERY;
SELECT
a.Id
, RTRIM(XMLAGG(XMLELEMENT("Details",
(
b.title || ' -' || c.item || ' -' || b.quantity) ORDER BY b.title)
).EXTRACT('//text()'), ' --- ') AS Details
, TO_CHAR(c.total, 'FM9,990.00') AS Sum
FROM
table1 d
/* joins */
WHERE
/* ... */
GROUP BY
a.Id
, b.title
, c.item
, b.quantity
ORDER BY
a.Id
Заранее большое спасибо.
Майк