Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用SQL滞后和_Sql_Sql Server_Sum_Lag - Fatal编程技术网

无法使用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

有什么问题?向我们显示数据库模式、示例数据、当前和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。将表格和数据作为文本发布