我可以在MSSQL的WHERE子句中使用SUM函数的结果吗?

时间:2018-01-27 18:21:21

标签: sql sql-server aggregate-functions

例如假设我有

SELECT sum(...) as total

我可以做点什么吗

WHERE total > 10

当我尝试实际语法时,我收到错误

  

无效的列名'total'

2 个答案:

答案 0 :(得分:6)

如果您将sumgroup by

一起使用
select sum(...) 
group by Col1 
having sum(...) > 10

没有group by

select sum(...) 
having sum(...) > 10 

如果要使用列名,则需要将查询放在子查询中

SELECT * FROM (
   SELECT sum(...) as total 
) as T
WHERE total > 10

答案 1 :(得分:1)

  

"聚合可能不会出现在WHERE子句中,除非它在a中   包含在HAVING子句或选择列表中的子查询以及列   被聚合是一个外部参考"。

HAVING就像使用聚合函数的WHERE,或者你可以使用子查询。

select name, sum(amount) as total
from table
group by name
having sum(amount) > 10

或者

select * from(
   select name, sum(amount) as total 
) as temp
where temp.total > 10