select
*
from sap_stockmaster
where itemid=9893
and salemrp=1034.00
and salemrp in(
select
salemrp
from sap_stockmaster
where SUM(stkqty)>0
)
order by salemrp desc
我要记录其数量之和大于零的记录,但得到以下错误
聚合可能不会出现在WHERE子句中,除非它位于包含在HAVING子句或select列表中的子查询中,并且正在聚合的列是外部引用。
发布于 2017-06-26 09:56:54
在对聚合进行筛选时,应该使用having
而不是where
。
select *
from sap_stockmaster
where itemid=9893
and salemrp=1034.00
and salemrp in (select salemrp
from sap_stockmaster
group by salemrp
HAVING SUM(stkqty)>0)
order by salemrp desc
而且,这可能是以联接或使用存在的形式编写的更多的表演性。
-- example with Exists
SELECT *
FROM sap_stockmaster ss1
WHERE itemid=9893
AND salemrp=1034.00
AND EXISTS (SELECT 1
FROM sap_stockmaster ss2
WHERE ss1.salemrp = ss2.salemrp
GROUP BY ss2.salemrp
HAVING SUM(ss2.stkqty)>0)
ORDER BY salemrp DESC
https://stackoverflow.com/questions/44765693
复制