【问题标题】:Update field in table using SUM of the same field in a specific date interval使用特定日期间隔内相同字段的 SUM 更新表中的字段
【发布时间】:2021-01-05 19:45:13
【问题描述】:

我在 SQL Server 中有下表:

必须应用于表的业务规则:如果过去 6 个月内 Staff_Id 达到 2500+ 的 Staff_Sales,则达到销售配额(..因此 QuotaReached = 1 )。

简而言之,我需要UPDATEStaff_Sales_Last_6_Months。必须计算这一列,这样我们才能得到这样的结果:

注意最后一行如何计算过去 6 个月的 Staff_Sales 的总和。这正是我所需要的。

我的尝试(不起作用):

WITH cte_SumSales AS
(
    SELECT
        Staff_Id, SUM(Sales) AS SumSales
    FROM 
        Sales
    WHERE 
        [Date] BETWEEN [Date] AND DATEADD(month, -6, [Date])
    GROUP BY 
        Staff_Id
)
UPDATE t1
SET t1.Staff_Sales_Last_6_Months = t2.SumSales
FROM Sales AS t1
INNER JOIN cte_SumSales AS t2 ON T1.Staff_Id = T2.Staff_Id

关于如何解决这个问题/更好的方法有什么想法吗?

谢谢。

【问题讨论】:

  • 下面最佳答案的索引视图怎么样?

标签: sql-server tsql sql-update dateinterval


【解决方案1】:

试试这个:

UPDATE te
SET Staff_Sales_Last_6_Month = SS
    , QuotaReached = IIF(SS < 3000, 0, 1)
FROM Table1 as te
OUTER APPLY (
    SELECT SUM(ti.Staff_Sales) 
    FROM Table1 as ti
    WHERE te.Staff_Id = ti.Staff_Id 
        and ti.Date1 <= te.Date1
        and ti.Date1 >= DATEADD(MONTH,-6,te.Date1)
) as ta(SS);

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2018-02-14
    • 2015-11-02
    • 1970-01-01
    相关资源
    最近更新 更多