我有一个看起来像下面的表格
Price | DateTime
--------+-------------
100 | 22/01/2016
210 | 23/01/2016
110 | 24/01/2016
10 | 25/01/2016
20 | 26/01/2016
30 | 13/03/2016
40 | 14/03/2016
50 | 15/03/2016
60 | 16/03/2016
现在我们可以看到里面有两个日期范围:
- 22/01/2016 -> 26/01/2016
- 13/03/2016 -> 16/032016
如何查询我的数据库以获得上述结果,即我描述的数据范围?数据可以按日期排序,但如何获取范围
最佳答案
您的范围似乎是由连续的日期定义的。您可以通过减去递增的数字来分配组——通过 row_number()
。剩下的就是聚合:
select min(datetime) as range_start, max(datetime) as range_end
from (select t.*,
dateadd(day, - row_number() over (order by datetime), datetime) as grp
from t
) t
group by grp;
关于sql - 在 SQL 中获取日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46708883/