sql - 如何在 sql server 中聚合 "continuous"记录?

标签 sql sql-server

我有一张这样的 table :

name        date        record
A           20180725    1
A           20180725    2
B           20180721    5
B           20180721    7
B           20180721    8
B           20180721    9

我希望汇总“连续”记录,预期结果如下:

name        date        r1    r2
A           20180725    1     2
B           20180721    5     5
B           20180721    7     9

其中r1r2是一组连续记录的开始和结束。

如何在sql server中以一种好的方式实现这一点?

最佳答案

这个问题是一个差距和孤岛问题。在您的情况下,它有一个非常简单的解决方案。如果从 record 中减去一个序列,则当 record 值是一个序列时,该值是常量。

所以:

select name, date, min(record), max(record)
from (select name, date, record,
             row_number() over (partition by name, date order by record) as seqnum
      from t
     ) t
group by name, date, (record - seqnum)

关于sql - 如何在 sql server 中聚合 "continuous"记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51516095/

相关文章:

sql - 丢失空值,使用where过滤sql查询结果

c# - 找到超速的时期?

Python MySQL 连接器无法从 SELECT 查询返回所有结果

sql - 无法在查询中从 TextBox 进行部分匹配

sql - 如何同时更改主键的值和更新外键

sql - 如何在SQL Server 2008中执行函数

SQL 比较正在更新的字段

mysql - 在对每个项目进行投票后重新计算排名

sql - JOIN 的奇怪行为

sql-server - 使用 SQLAlchemy 连接到 SQL Server