问题描述
我正在sql Server 2017 Windows 10中编写代码。我不知道问题出在哪里,也无法获得case表达式总和的结果。
这是我的代码
select PD.PONO,PM.CURRSTATUS,PD.Qty,case when pm.currstatus = 1 then sum(pd.qty) end TotalStock
from ppom PM
LEFT OUTER join ppod PD on pd.pono = pm.pono
where pm.pono = 15973
group by PD.PONO,PD.Qty
GO
结果显示在下面
PONO CURRSTATUS Qty TotalStock
15973 1 8 8
15973 1 14 14
15973 1 25 25
结果应显示总和值
PONO CURRSTATUS Qty TotalStock
15973 1 8 47
15973 1 14 47
15973 1 25 47
在此感谢您的帮助
解决方法
您似乎想要一个窗口总和而不是聚合。看起来像:
select
pd.pono,pm.currstatus,pd.qty,sum(case when pm.currstatus = 1 then pd.qty else 0 end)
over(partition by pd.pono) total_stock
from ppom pm
left join ppod pd on pd.pono = pm.pono