如何根据状态列将序列号添加到行组

时间:2016-07-22 19:12:58

标签: sql sql-server

我按顺序排了一组行。列“状态”只有两个值0/1。现在,我想为每个0/1集添加一个序列号/组号。可以有1到多行的0,但最后每组只有一个1。如何添加新列作为序列号,只有在存在1时才会增加。

示例:

ID  Status  Row Group Number
1   0   1
2   0   1
3   1   1
4   0   2
5   1   2
6   0   3
7   0   3
8   0   3
9   1   3

问题是如何获得第三列?

谢谢。

1 个答案:

答案 0 :(得分:4)

嗯。嗯。 。 。这是前一行(加1)的累积总和。因此,在SQL Server 2012+中,您可以执行以下操作:

select t.*,
       1 + sum(status) over (order by id) - status as rowgroupnumber
from t;