首页 > 解决方案 > 解决 SUM 和 AVG,无法对包含聚合或子查询的表达式执行聚合函数

问题描述

我在 SQL 中有以下查询求和和平均值:

USE DBSTG_INT
GO

select distinct 
sum(a.EventoPrecioReg) as PrecioRegular,
sum(a.EventoPrecioVta) as PrecioVenta,
AVG(VTA_IUnidades) as Unidades,
SUM((a.EventoPrecioVta - a.EventoPrecioReg) * (AVG(VTA_IUnidades))) as Inversion
from EventoPrecioDeta a WITH (NOLOCK)

当我执行它时,它显示以下问题:

消息 130,级别 15,状态 1,第 8 行
无法对包含聚合或子查询的表达式执行聚合函数。

我做错了什么,我该如何解决?

标签: sqlsql-server

解决方案


select distinct在这种情况下没有意义。您的问题是嵌套聚合。也许您打算:

select sum(a.EventoPrecioReg) as PrecioRegular,
       sum(a.EventoPrecioVta) as PrecioVenta,
       AVG(VTA_IUnidades) as Unidades,
       SUM(a.EventoPrecioVta - a.EventoPrecioReg) * AVG(VTA_IUnidades) as Inversion
from EventoPrecioDeta a ;

推荐阅读