Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 - Fatal编程技术网

Sql 如何根据状态列向行组添加序号

Sql 如何根据状态列向行组添加序号,sql,sql-server,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 问题是我如何获得第三列 谢谢。嗯。这是上一行的累计总和(

我有一组按顺序排列的行。“状态”列只有两个值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)。因此,在SQL Server 2012+中,您可以执行以下操作:

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

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

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

我想你需要在你的
行组号上
+1
value@Nicarus . . . 那有点好笑。我把它放在文本中,然后没有放在查询中。非常巧妙地使用状态列。这是可行的,当状态为0时,我必须+1个案例才能进行设置。我一直在考虑复杂的连接/秩函数等,但没有成功。非常感谢。我想你需要在你的
行组号上
+1
value@Nicarus . . . 那有点好笑。我把它放在文本中,然后没有放在查询中。非常巧妙地使用状态列。这是可行的,当状态为0时,我必须+1个案例才能进行设置。我一直在考虑复杂的连接/秩函数等,但没有成功。非常感谢。