Oracle SQL: Грешка при липсващ идентификатор в Select with Xmlagg

Нов съм в 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

Много благодаря предварително.
Майк


person keewee279    schedule 06.07.2017    source източник


Отговори (1)


Само няколко неща трябва да бъдат преместени тук и там.

SELECT a.Id ,
    RTRIM(XMLAGG(XMLELEMENT("Details", b.title
    || ' -'
    || c.item
    || ' -'
    || b.quantity ,' --- ' ).EXTRACT('//text()')
ORDER BY b.title),
    ' --- ')
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
person Sudipta Mondal    schedule 06.07.2017
comment
Благодаря, Sudipta. Не изглежда, че това е нещото, от което имам нужда тук. Можете да пренебрегнете сумата, тъй като мога да изтегля това от отделна таблица, така че да не се налага да се изчислява. Най-важното за мен е да комбинирам колоните за подробности, но това е и текст, и числа, така че тук ми се струва грешно. - person keewee279; 06.07.2017
comment
@keewee279 - Получавате ли някакви грешки, когато го стартирате? Не съм сигурен какво имате предвид, когато казвате но това е и текст, и числа, така че тук ми се струва грешно - person Sudipta Mondal; 06.07.2017