Oracle SQL:Xmlagg Select 中缺少标识符错误

Oracle SQL: Missing identifier error in Select with Xmlagg

我是 Oracle 的新手,希望这里有人可以帮助我解决这个问题。

我有一个 Select returns 以下没有行聚合:
current output

我的问题是第一列中的某些 ID 可以有多行,而 每个 ID 只需要一行,就像这样:
required output

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

非常感谢。
麦克

只有几样东西需要移动。

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