当前位置: 代码迷 >> Sql Server >> 不能对包含聚合或子查询的表达式执行聚合函数。解决办法
  详细解决方案

不能对包含聚合或子查询的表达式执行聚合函数。解决办法

热度:94   发布时间:2016-04-27 14:28:08.0
不能对包含聚合或子查询的表达式执行聚合函数。
select sum(case when QtyPrgPlanPKID_FKID_QtyID in(select ListBudgetPKID from tbListBudget where ListBudgetName='801') then QtyPrgPlanPlanQty else 0 end) '801线路累计' from tbQtyPrgPlan


--不能对包含聚合或子查询的表达式执行聚合函数。

------解决方案--------------------
用left join去累计吧!

select sum(case when b.ListBudgetPKID is not null then a.QtyPrgPlanPlanQty 
else 0 end) '801线路累计' 
from tbQtyPrgPlan a left join tbListBudget b 
on a.QtyPrgPlanPKID_FKID_QtyID = b.ListBudgetPKID and b.ListBudgetName='801'
------解决方案--------------------
SQL code
--分别统计select m.QtyPrgPlanPKID_FKID_QtyID , sum(QtyPrgPlanPlanQty) '801线路累计'from tbQtyPrgPlan m , tbListBudget nwhere m.QtyPrgPlanPKID_FKID_QtyID = n.ListBudgetPKID and n.ListBudgetName='801'group by m.QtyPrgPlanPKID_FKID_QtyID--总体统计select sum(QtyPrgPlanPlanQty) '801线路累计'from tbQtyPrgPlan m , tbListBudget nwhere m.QtyPrgPlanPKID_FKID_QtyID = n.ListBudgetPKID and n.ListBudgetName='801'
  相关解决方案