sql - 如何对序列 block 进行编号

标签 sql sql-server t-sql

给定下面的数字序列,如何分配序列号,以便为每个以 1 开头并以 0 结尾的 block 赋予唯一的标识号?如何使用 TSQL 创建序列号列?

<表类=“s-表”> <标题> 序列 序列号 <正文> 1 1 1 1 0 1 1 2 1 2 1 2 0 2 1 3 0 3

最佳答案

使用COUNT OVER来计算零。您需要一些列来确定顺序。我在以下查询中将其称为 sortkey:

select
  t.*,
  count(case when sequence = 0 then 1 end) 
    over (order by sortkey
          rows between unbounded preceding and 1 preceding) + 1
    as sequence_number
from mytable t
order by sortkey;

演示:https://dbfiddle.uk/3DZBeDMQ

关于sql - 如何对序列 block 进行编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74205439/

相关文章:

sql - 查询以检查是否有任何以输入字符串开头的行

sql - SQL Server 2012 中的手动全文索引填充时间

sql - 使用连接查询从四个不同的表中获取记录

sql-server-2008 - 使用 Null 进行分组 T-SQL

sql-server - 计算柱性能

sql - 在SQL中提取两个字符之间的文本

java - 如何使用 like 和 % 进行 Hibernate 查询?

mysql - 如何在MySQL中的字符串的第二个大写字母前插入一个空格?

sql-server - 如何伪造旧版本的 SQL Server 以支持遗留应用程序代码

c# - 将 ASP.NET 网站连接到 SQL 数据库