解决上SUM和AVG,不能对包含聚合或子查询的表达式执行聚合功能

问题描述 投票:2回答:2

我在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号线 不能对包含聚合或子查询的表达式执行聚合功能。

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

sql sql-server
2个回答
1
投票

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 ;

1
投票

尝试像下面不需要不同

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
© www.soinside.com 2019 - 2024. All rights reserved.