我有一张这样的 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
其中r1
和r2
是一组连续记录的开始和结束。
如何在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/