计算待办事项Y-1

时间:2019-02-13 09:14:52

标签: sql sql-server

我正在计算积压y-1。我使用与-12月的第一天的Snapdate对应的BACKLOG_M的值。 例如:对于2018年1月的每个Snapdate,我们将检索Snapdate 2017年2月1日的值。 Excel screenshot

我尝试了以下脚本,但它返回错误值[stg]。[CMA_SALES_KPI]和dbo.CMA_SALES_KPI_Daily包含期间日期。 Data_Bckl包含每个日期的积压值。

SELECT     T22.ANNE, T22.MOIS, T3.BCKL AS BCK3
FROM        (
select
        convert(nvarchar(6), dateadd(month, - 11, convert(datetime, SNAP)), 112)           as PERI,
        year(SNAP)                                                                            as ANNE,
        month(SNAP)                                                                           as MOIS
      from
        [stg].[CMA_SALES_KPI]
      where
        day(SNAP) = 1
      union
      select
        convert(nvarchar(6), dateadd(month, - 11, dateadd(month, -1, min(SNAPDATE))), 112) as PERI,
        min([YEAR])                                                                           as ANNE,
        min([MONTH])                                                                          as MOIS
      from
        dbo.CMA_SALES_KPI_Daily
) AS T22 LEFT OUTER JOIN
                     Data_Bckl AS T3 ON CONVERT(nvarchar(6), T3.SNAP, 112) = T22.PERI

1 个答案:

答案 0 :(得分:0)

以月初和前一年为条件使用自我加入:

select t1.*, t2.backlog_m
from mytable t1
left join mytable t2
  on DATEADD(month, DATEDIFF(month, 0, t1.snap), 0) -- first of this month
     = dateadd(year, -1, DATEADD(month, DATEDIFF(month, 0, t2.snap), 0))  -- first of this month last year