请问下面这个存储语句为什么有“不能对包含聚合或子查询的表达式执行聚合函数。”应该怎么改,谢谢了!!!

tzhguan 2004-12-21 09:32:04
declare @y int
set @y='2004'
declare @m int
set @m='1'
select '1'编号,矿名,sum(数量)销售量 ,sum(数量*灰分)/sum(数量)灰分,
sum(数量*含矸率)/sum(数量)含矸率,sum(case when 品种<>'混煤' then 数量 end)*100/sum(数量) 块煤率
,sum(数量*单价)/sum(数量) 单价,sum(round(数量*单价*0.0001,2)) as 销售额,
----去年的信息
sum(数量)-sum(case when year(日期)=@y-1 and month(日期)=@m then sum(数量) else 0 end)同比销售量
from mzb
where year(日期)=@y and month(日期)=@m
group by 矿名

问题在sum(数量)-sum(case when year(日期)=@y-1 and month(日期)=@m then sum(数量) else 0 end)同比销售量
应该如何改,谢谢!!

...全文
189 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
didoleo 2004-12-21
  • 打赏
  • 举报
回复
“不能对包含聚合或子查询的表达式执行聚合函数。”

你的聚合函数sum()里面包含了聚合--sum()
didoleo 2004-12-21
  • 打赏
  • 举报
回复
sum()里面套了个sum()?

sum(case when year(日期)=@y-1 and month(日期)=@m then sum(数量) else 0 end)

-->>
sum(case when year(日期)=@y-1 and month(日期)=@m then 数量 else 0 end)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧