【发布时间】:2020-08-08 04:39:13
【问题描述】:
我正在尝试编写一个查询,我想根据作为子查询的条件对价格列求和。
我的查询:
select
fund.FundName,
SUM(Case when (
Select Top 1 bitValue
from table 1
where table1.id = Company.id and table1.field = 25
) = 1 then price else 0 end) as 'TotalPrice'
from
Fund left outer join Company on Company.fundId=fund.id
group by
fund.fundName
它引发错误:无法对包含聚合或子查询的表达式执行聚合函数。
实现这一目标的最佳替代方法是什么。
【问题讨论】:
-
Top 1是否存在于 MySQL 中?我认为您的数据库标签错误。这可能是 Sybase 或 SQL Server。 -
我的错,这是一个 sql server 查询
-
不,这是另一个问题。我在这个子查询之外使用了 join 并且没有工作。此外,我使用的是 Top 1,但我在任何地方都找不到答案。我知道 case 不允许多个返回值。所以我想知道实现这种情况的替代方法是什么。
-
存在时可以试试??
标签: sql-server subquery case aggregate-functions