计算BACKLOG_M_1

时间:2019-01-11 15:18:57

标签: sql sql-server

我需要计算与本月第一天的快照日期相对应的BLACKLOG_M值。在每月的每一行重复它成为恒定值

如图所示:

enter image description here

SELECT     T1.SNAP, T1.PERI, T1.ANNEE, T1.MOIS, T1.[BCKL], T2.[BCKL] AS BCK2,[NBR1]
      ,[NBR2]
FROM         stg.FACTSALES AS T1 LEFT OUTER JOIN
                          (SELECT     YEAR(SNAP) AS ANNEE, MONTH(SNAP) AS MOIS, [BCKL]
                            FROM          stg.FACTSALES
                            WHERE      (DAY(SNAP) = 1)) AS T2 ON T2.ANNEE = T1.ANNEE AND T2.MOIS = T1.MOIS 

脚本返回正确的值,但是还有其他最佳想法或改进之处吗?

1 个答案:

答案 0 :(得分:1)

您要将值从每月的第一天复制到该月的剩余时间。那应该是可能的。

select fs.*,
       (case when day(snapdate) = 1
             then max(case when day_snapdate() = 1 then backlog_m end) over (partition by year_month)
        end) as backlog_m_1
from stg.FACTSALES fs;

这也会在第一天分配值。不清楚您想要该值是什么。