【发布时间】:2017-12-10 07:19:19
【问题描述】:
我是 Oracle 的新手,希望这里有人可以帮助我。
我有一个不带行聚合返回以下内容的 Select:
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
非常感谢。
迈克
【问题讨论】:
标签: sql xml oracle concatenation aggregation