【发布时间】:2017-12-07 10:44:08
【问题描述】:
我有一个表设置,它为每一列 p.S_ID 返回多行列 i.AIN,所以我尝试将这些聚合起来,以便为每个唯一的 i.AIN 记录只获取一行。
我无法使用 Listagg,因为我超出了那里的字符数限制。
使用来自该网站的信息,我创建了以下查询,但收到以下错误:
"ORA-00937: not a single-group group function"
有人可以告诉我如何在此处更改我的 GROUP BY 以使其正常工作,或者我的查询是否还有其他问题?
我的查询(缩短):
ALTER SESSION ENABLE PARALLEL QUERY;
SELECT
p.S_ID AS ID
, XMLELEMENT
(
"AINs", XMLAGG
(
XMLELEMENT
(
"AIN", i.AIN ||
'-nl-Article: ' || SUBSTR(a.AIN_NAME, 1, 50) || '...' ||
'-nl-Quantity: ' || SUM(i.UNITS) ||
'-nl-Price: ' || TO_CHAR(i.PRICE, 'FM9,990.00') || ' + ' || TO_CHAR(i.PRICE_TAX, 'FM9,990.00') || ' USt = ' || TO_CHAR((i.PRICE + i.PRICE_TAX), 'FM9,990.00') ||
'-nl------' ||
'-nl-Subtotal: ' || TO_CHAR((i.PRICE * SUM(i.UNITS)), 'FM9,990.00') || ' + ' || TO_CHAR((i.PRICE_TAX * SUM(i.UNITS)), 'FM9,990.00') || ' USt = ' || TO_CHAR(((i.PRICE + i.PRICE_TAX) * SUM(i.UNITS)), 'FM9,990.00')
)
)
)/*.EXTRACT('//text()')*/ AS Details
FROM
ITEMS i
LEFT JOIN
AINS a
ON i.AIN = a.AIN
LEFT JOIN
PKGS p
ON i.SHIPMENT = p.SHIPMENT
WHERE
/*...*/
GROUP BY
p.S_ID
, i.AIN
, a.AIN_NAME
, i.UNITS
, i.PRICE
, i.PRICE_TAX
ORDER BY
p.S_ID
非常感谢您对此提供的任何帮助 - 非常感谢,
迈克
【问题讨论】:
-
我认为你应该向我们展示 XML 结构,没有它就很难说。
标签: sql oracle group-by aggregation string-aggregation