首页 > 解决方案 > SQL Sum 和自连接?

问题描述

我在表 T_FORECAST 中有如下组织的数据

   Location     Sublocation     Delivery_forecast    Delivery_Date     Forecast_date
   ----------------------------------------------------------------------------------
   1            1               100                  2020-01-01        2019-01-01
   1            2               50                   2020-01-01        2019-05-01
   1            1               90                   2020-01-01        2019-06-01
   1            2               70                   2020-01-01        2019-10-01
   . . .

我正在尝试编写一个查询,该查询将输出每个位置的 Delivery_forecast、Delivery_date 和 Forecast_date 的总和。在下面的示例中,我希望:

   Location     Delivery_forecast    Delivery_Date     Forecast_date
   ----------------------------------------------------------------------------------
   1            100                  2020-01-01        2019-01-01
   1            150                  2020-01-01        2019-05-01
   1            140                  2020-01-01        2019-06-01
   1            160                  2020-01-01        2019-10-01

我可以使用下面的请求找到我需要的行列表,但我找不到获得正确总和的方法。我相信我必须做一个自我加入

SELECT DISTINCT f.Location, f.Delivery_Date, f.Forecast_date
FROM T_FORECAST f 

标签: sqlsql-server

解决方案


使用累积和:

select f.*,
       sum(delivery_forecast) over (partition by location, delivery_date order by forecast_date) as running_delivery_forecast
from T_FORECAST f;

推荐阅读