创建按语句评估分组的运行总计

时间:2017-11-29 10:56:33

标签: sql sql-server packing

使用本文,我实现了一个确定用户事件的打包间隔的查询:

http://www.itprotoday.com/microsoft-sql-server/new-solution-packing-intervals-problem

我最终得到了以下输出: enter image description here 但是,我无法理解的是如何通过userId为每个日期对打包的间隔进行分组。基本上,我需要一个末尾的组列,当isStart为1时,每列增加,但当isStart为null时,输出与前一行相同。

因此它应该:

Row 1: 1
Row 2: 2
Row 3: 2
Row 4: 3
Row 5: 4
Row 6: 5
Row 7: 6
Row 8: 7
Row 9: 8
Row 10: 9
Row 11: 9
Row 12: 9
Row 13: 10

...等

这允许我检索每个组的最小开始和最大结束。我确信这很明显,但我似乎无法发现它!

1 个答案:

答案 0 :(得分:1)

只需使用累计金额:

select t.*,
       sum(isStart) over (order by start) as grp
from t;