【问题标题】:Sum in case expression案例表达式求和
【发布时间】:2020-09-08 23:35:59
【问题描述】:

我正在 SQL Server 2017 Windows 10 中编写代码。我不知道问题出在哪里,也无法得到总计的结果。

这是我的代码

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, PM.CURRSTATUS, 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

请帮助我,谢谢

【问题讨论】:

    标签: sql sql-server sum left-join window-functions


    【解决方案1】:

    您似乎想要一个窗口总和而不是聚合。它看起来像:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-18
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2011-12-24
      相关资源
      最近更新 更多