使用滞后函数对多列求和 SQL
Sum multiple columns with lag function SQL
我正在尝试使用 SQL 对 2 个字段求和。我的第一个字段在当前行(leadTime days)中,而第二个字段位于前一行(LeadTime Cumulative)。
到目前为止,我为计算提交的累计提前期所做的工作
CASE
WHEN [ClientNo] <> LAG([ClientNo], 1) OVER(ORDER BY [ClientNo], [Startdate])
THEN [LeadTime days]
WHEN [ClientNo] = LAG([ClientNo], 1) OVER(ORDER BY [ClientNo], [Startdate])
AND DATEDIFF(DD, [Enddate Previous], [Startdate]) > 10
THEN [LeadTime days]
WHEN [ClientNor] = LAG([ClientNo], 1) OVER(ORDER BY [ClientNo], [Startdate])
AND DATEDIFF(DD, [Enddate Previous], [Startdate]) < 10
THEN [LeadTime days] + LAG([LeadTime Cumulative], 1) OVER(ORDER BY [ClientNo],
[Startdate])
ELSE [LeadTime days]
END
它出了问题,它没有增加字段提前期天数 + 滞后(提前期累计,1)。它给了我空值:
额外:
如果 datediff start date en enddate previous record within same client > 10, 你必须重新开始计数
知道如何解决这个问题吗?
我想你想要一个累计数:
select t.*,
sum(lead_time_days) over (partition by clientno
order by startdate
) as cumulative_lead_time_days
from t
我正在尝试使用 SQL 对 2 个字段求和。我的第一个字段在当前行(leadTime days)中,而第二个字段位于前一行(LeadTime Cumulative)。
到目前为止,我为计算提交的累计提前期所做的工作
CASE
WHEN [ClientNo] <> LAG([ClientNo], 1) OVER(ORDER BY [ClientNo], [Startdate])
THEN [LeadTime days]
WHEN [ClientNo] = LAG([ClientNo], 1) OVER(ORDER BY [ClientNo], [Startdate])
AND DATEDIFF(DD, [Enddate Previous], [Startdate]) > 10
THEN [LeadTime days]
WHEN [ClientNor] = LAG([ClientNo], 1) OVER(ORDER BY [ClientNo], [Startdate])
AND DATEDIFF(DD, [Enddate Previous], [Startdate]) < 10
THEN [LeadTime days] + LAG([LeadTime Cumulative], 1) OVER(ORDER BY [ClientNo],
[Startdate])
ELSE [LeadTime days]
END
它出了问题,它没有增加字段提前期天数 + 滞后(提前期累计,1)。它给了我空值:
额外: 如果 datediff start date en enddate previous record within same client > 10, 你必须重新开始计数 知道如何解决这个问题吗?
我想你想要一个累计数:
select t.*,
sum(lead_time_days) over (partition by clientno
order by startdate
) as cumulative_lead_time_days
from t