首页 > 解决方案 > 使用空日期运行总计 - SQL

问题描述

我想计算仓库中物品的运行库存总数,但也包括没有移动的周数。示例数据如下所示。

Year  WeekNumber Category  Units in
2019    1            A       10
2019    1            B       20
2019    2            A       15
2019    2            B       10
2019    3            A       15

在第 3 周,B 类没有“单位”,但我仍然想显示该类别的运行总数。

我编写了以下代码,适用于 A 类,但在第 3 周,它不显示 B 类运行总数。

sum(units in) over
(partition by category order by year, weeknumber)

预期成绩

Year  WeekNumber  Category  Running Total
2019     1           A           10
2019     1           B           20
2019     2           A           25
2019     2           B           30
2019     3           A           40
2019     3           B           30

有什么建议么?

谢谢 afk

标签: sqlsql-servertsql

解决方案


我认为您希望 across join生成所有结果,然后 aleft join引入数据。然后使用窗口函数:

select yw.year, yw.weeknumber, c.category, t.units_in,
       sum(t.units_in) over (partition by c.category order by yw.year, yw.weeknumber) as running_units_in
from (select distinct category from t) c cross join
     (select distinct year, weeknumber from t) yw left join
     t
     on t.category = c.category and t.year = yw.year and t.weeknumber = yw.weeknumber;

注意:与使用select distinct.


推荐阅读