Sql sum上的列名无效

Sql sum上的列名无效,sql,sql-server,Sql,Sql Server,我正在尝试执行sql语句 select buyer, issuer, ident, sum(qnty) as sum1 from palete where sum1 <> 0 group by buyer, issuer, ident 我得到了一个错误 无效的列名“sum1” 问题是我得到了很多结果,所以我希望在sum1为0的情况下避免这些结果 谢谢你的帮助 Alternate,不带子查询: select * from ( select buyer, issuer, ident

我正在尝试执行sql语句

select buyer, issuer, ident, sum(qnty) as sum1
from palete
where sum1 <> 0
group by buyer, issuer, ident
我得到了一个错误 无效的列名“sum1”

问题是我得到了很多结果,所以我希望在sum1为0的情况下避免这些结果


谢谢你的帮助

Alternate,不带子查询:

select * from
(
  select buyer, issuer, ident, sum(qnty) as sum1 from palete group by buyer, issuer, ident
) as T1 where T1.sum1 <> 0
select buyer, issuer, ident, sum(qnty) as sum1 
from palete 
group by buyer, issuer, ident 
having sum(qnty) <> 0

where子句中不识别别名。您需要这样做:

select buyer, issuer, ident, sum(qnty) as sum1 
from palete 
group by buyer, issuer, ident 
having sum(qnty) <> 0

您需要使用HAVING子句而不是WHERE子句

SQL HAVING子句与SELECT子句结合使用,以指定组或聚合的搜索条件。HAVING子句的行为类似于WHERE子句,但适用于组—结果集中表示组的行。相反,WHERE子句应用于单个行,而不是组


希望这有帮助。

您能发布palete的表定义吗?不能在where子句中使用聚合您不能在where子句中使用聚合。使用having你是对的,它是有效的。但是,当你可以使用的时候,为什么要筑巢呢?