无法使用SQL滞后和
我的问题是这样的无法使用SQL滞后和,sql,sql-server,sum,lag,Sql,Sql Server,Sum,Lag,我的问题是这样的 SELECT [day], [time],AvaliableTimes, CASE WHEN AvaliableTimes > 0 THEN SUM(AvaliableTimes) OVER (ORDER BY [day], [time], AvaliableTimes) ELSE 0 END AS SumValue FROM [AvailableTimes] WHERE
SELECT
[day], [time],AvaliableTimes,
CASE
WHEN AvaliableTimes > 0
THEN SUM(AvaliableTimes) OVER (ORDER BY [day], [time], AvaliableTimes)
ELSE 0
END AS SumValue
FROM
[AvailableTimes]
WHERE
[day] = 1 AND BranchAreaId = 1
ORDER BY
[day], [time], AvaliableTimes
如果值为null或0,我希望从0开始求和
结果:
您可以使用递归CTE来执行此操作。在rcte中执行累积和,如果AvailableTimes=0,则重置它
; with
cte as
(
select *, rn = row_number() over (order by time)
from yourtable
),
rcte as
(
select *, sumvalues = AvailableTimes
from cte
where rn = 1
union all
select c.*, sumvalues = case when c.AvailableTimes <> 0
then r.sumvalues + c.AvailableTimes
else c.AvailableTimes
end
from cte c
inner join rcte r on c.rn = r.rn + 1
)
select day, time, AvailableTimes, sumvalues
from rcte
order by time
有什么问题?向我们显示数据库模式、示例数据、当前和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。将表格和数据作为文本发布