Sql 如何根据状态列向行组添加序号
我有一组按顺序排列的行。“状态”列只有两个值0/1。现在,我想为每个0/1集添加一个序列号/组号。可以有1到多行0,但最后每个集合只能有一个1。如何添加一个新列作为序列号,该序列号仅在有1时增加 例如: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 问题是我如何获得第三列 谢谢。嗯。这是上一行的累计总和(
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个案例才能进行设置。我一直在考虑复杂的连接/秩函数等,但没有成功。非常感谢。