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
Спасибо, Судипта. Не похоже, что это то, что мне здесь нужно. Вы можете игнорировать сумму, так как я могу взять ее из отдельной таблицы, поэтому ее не нужно вычислять. Для меня важнее всего объединить столбцы для сведений, но это и текст, и числа, поэтому мне кажется, что здесь это неправильно. - person keewee279; 06.07.2017
comment
@ keewee279 - Вы получаете какие-либо ошибки при запуске? Не уверен, что вы имеете в виду, когда говорите но это и текст, и цифры, поэтому мне кажется, что здесь это неправильно - person Sudipta Mondal; 06.07.2017