我有以下查询,其中我选择客户编号,我执行DECODE,其中我有位置的测量数据和SUM函数中发票的净值之和。我从发票数据表中调用此数据。
当我尝试运行查询时,SUM函数出现问题,我得到以下错误:
*00934. 00000 -“此处不允许使用组函数”。 原因:
- 操作:行中出错:18柱:6**
SELECT CLT_NOMBRE1, --name of customer
DECODE(zpk, NULL, MAX(zpk) OVER (PARTITION BY factura_ha, facturanumero,locacion) MELO,
SUM (fct_neto) fct_neto
FROM tbl_facturas
WHERE NETOZ !=0
AND lugar_lectura = '902'
AND anio = '2023'
GROUP BY CLT_NOMBRE1,
DECODE(zpk, NULL, MAX(zpk) OVER (PARTITION BY factura_ha, facturanumero,locacion)
字符串
我在互联网上搜索了一个解决方案,在许多情况下,我读到我必须从GROUP BY中删除聚合字段,在这种情况下是SUM(fac_neto),但对于其他两个字段CLT_NOMBRE1和DECODE(梅洛),我必须将它们包含在那里。在CASE的情况下,不带别名的所有完整语句。我试过了,但它不起作用。有人可以告诉我什么可能是错的,我一直试图解决它几天,但没有成功。
1条答案
按热度按时间xxhby3vn1#
1.您缺少
DECODE
的右括号。1.更基本的是,在聚合函数之后计算分析函数。您需要使用子查询来强制反转评估顺序:
字符串
DECODE
函数代替CASE
表达式;但是,CASE
是ANSI标准,而DECODE
是Oracle特定的。*fiddle