Sql server 如何使用SQL Sum(Max())函数

Sql server 如何使用SQL Sum(Max())函数,sql-server,Sql Server,我正在努力 Select Sum(Max(IsNull(c.CapacityCost, 0))) 但它不起作用。我该怎么做 错误消息: 无法对包含聚合或子查询的表达式执行聚合函数 我的代码: Select Max(IsNull(c.CapacityCost, 0)) Company c 要获得(我认为)您想要实现的目标,您需要使用子查询。大致如下: declare @company table( CapacityCost int, CompanyID int, CompanyName va

我正在努力

Select Sum(Max(IsNull(c.CapacityCost, 0)))
但它不起作用。我该怎么做

错误消息:

无法对包含聚合或子查询的表达式执行聚合函数

我的代码:

Select 
Max(IsNull(c.CapacityCost, 0)) Company c
要获得(我认为)您想要实现的目标,您需要使用子查询。大致如下:

declare @company table(
CapacityCost int,
CompanyID int,
CompanyName varchar(20),
Country char(2))

INSERT INTO @company VALUES (20, 1, 'dduck inc', 'us')
INSERT INTO @company VALUES (25, 2, 'dduck plc', 'uk')
INSERT INTO @company VALUES (10, 3, 'mmouse inc', 'us')
INSERT INTO @company VALUES (35, 4, 'mmouse plc', 'uk')
INSERT INTO @company VALUES (15, 5, 'rrabbit inc', 'us')
INSERT INTO @company VALUES (30, 6, 'rrabbit plc', 'uk')

SELECT SUM(MaxCC) 
FROM 
(SELECT MAX(CapacityCost) AS MaxCC, Country FROM @company GROUP BY Country) m

在这里询问SQL问题时,提供一些示例数据和所需结果集的说明总是很有用的。这使得人们更容易向你提供帮助。正如你们在这里看到的,我的回答中包含了一些数据和一个表结构。你不需要给我们真实的数据或完全相同的表结构,只要足以说明你想要得到什么。

>>描述中的Sum(Max(IsNull(sid.CapacityCost,0)))不在你的代码中@sepupic我试过了,它不起作用。我的目的是:当你进行第一次聚合时,你已经有了一个,每个组只有一个值考虑一下:当您按日期、公司ID分组时,您将有1个值,或最大值,或总和。在第一种情况下,当您向服务器请求max时,对于每个公司和每个日期,您都会有max cost,它将是一个值。你想用它做什么?若您然后向服务器请求一个总和,或者您不需要分组,或者,若您再次按公司日期分组,您将获得相同的值,它将为您提供给定公司日期的一个值(即最大值)的总和。这是逻辑上的一个错误,你想得到什么?您需要添加示例数据和期望的结果,以使您的问题易于理解。