我是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
非常感谢提前 麦克
答案 0 :(得分:0)
只需要在这里和那里移动一些东西。
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