在SQL Server中标记列中的连续行是否具有相同的值

在SQL Server中标记列中的连续行是否具有相同的值,sql,sql-server,Sql,Sql Server,如果SQL Server中的标志列中至少有3个连续的1,我想添加一个标记ID的列 这可能会有所帮助。这似乎与你的要求相似,可能会让你走上正确的轨道。 所以可能是类似的东西 ID Flag 1000 0 1000 1 1000 1 1000 1 1000 1 1000 0 2000 0 2000 1 2000 0 2000 1 2000 0 这里的预期输出是什么?实际序列是否有字段?表中是否有更多数据?根据您显示的数据,无法对

如果SQL Server中的标志列中至少有3个连续的1,我想添加一个标记ID的列

这可能会有所帮助。这似乎与你的要求相似,可能会让你走上正确的轨道。

所以可能是类似的东西

ID  Flag
1000    0
1000    1
1000    1
1000    1
1000    1
1000    0
2000    0
2000    1
2000    0
2000    1
2000    0

这里的预期输出是什么?实际序列是否有字段?表中是否有更多数据?根据您显示的数据,无法对数据排序以确定哪些记录是连续的。SQL表表示无序集。除非另一列提供排序信息,否则不存在连续值。
CREATE TABLE Table1 (
id int,
flag bit)

INSERT into Table1 (id,flag)
VALUES (1000,0),(1000,1),(1000,1),(1000,1)


SELECT t.*
FROM (SELECT t.*, count(*) over (partition by ID) as cnt
  FROM (SELECT table1.*,
               (row_number() over (partition by id order by flag) 

               ) as grp
        from table1
       ) t
  WHERE flag = 1
 ) t
WHERE cnt >= 3;