日期:2014-05-18  浏览次数:20542 次

请问我的SQL错在哪了?应该怎样改?
select   name1,sum(sale*quantity)   as   aa
from   shop_jb   a   join   shop_xs   b   on   a.id=b.id
where   aa> 3000
group   by   name1   having   count(b.id)> 2


运行结果是

服务器:   消息   207,级别   16,状态   3,行   2
列名   'aa '   无效。
服务器:   消息   207,级别   16,状态   1,行   2
列名   'aa '   无效。


where   后面不能跟别名吗?请问我错哪了,应该怎样改?
多谢各位!!

------解决方案--------------------
select name1,sum(sale*quantity) as aa
from shop_jb a join shop_xs b on a.id=b.id

group by name1 having count(b.id)> 2 and sum(sale*quantity)> 3000

--aa为别名
------解决方案--------------------
select name1,sum(sale*quantity) as aa
from shop_jb a join shop_xs b on a.id=b.id
where sum(sale*quantity)> 3000
group by name1 having count(b.id)> 2


别名是不可以做为条件来使用的
------解决方案--------------------

select name1,aa
from
(select name1,sum(sale*quantity) as aa
from shop_jb a join shop_xs b on a.id=b.id
group by name1 having count(b.id)> 2)tmp
where aa> 3000

------解决方案--------------------
select name1,sum(sale*quantity) as aa
from shop_jb a join shop_xs b on a.id=b.id
group by name1
having count(b.id)> 2 and sum(sale*quantity)> 3000 --这里不能用别名aa