Нов съм в 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
Много благодаря предварително.
Майк