gpt4 book ai didi

sql - 将后续日期分组到垃圾箱中

转载 作者:行者123 更新时间:2023-12-01 21:43:25 28 4
gpt4 key购买 nike

假设我有下表:

date         version  
2015-02-01 v1
2015-02-02 v1
2015-02-03 v1
2015-02-04 v1
2015-02-02 v2
2015-02-03 v2
2015-02-08 v1
2015-02-09 v1

我的查询应以我得到此结果的方式对日期进行分组:

datefrom      dateto      version
2015-02-01 2015-02-04 v1
2015-02-08 2015-02-09 v1
2015-02-02 2015-02-03 v2

我尝试了一些东西

LEAD(date) OVER(PARTITION BY version ORDER BY date)

但它并没有真正得到返回,因为我无法对日期的“垃圾箱”进行分组。我想将每个后续日期分组到垃圾箱中,不允许有日期间隙。

最佳答案

您可以通过将带有 datediff 的行号与固定日期进行比较来做到这一点,如果这些差异发生变化,则必须至少有一天的间隙。所以,像这样:

select
version,
min (date) as datefrom,
max (date) as dateto
from
(
select
version,
date,
datediff(day, '20100101', date)
- row_number() over (partition by version order by date) as bin
from
version
) T
group by
version,
bin
order by
version,
datefrom

关于sql - 将后续日期分组到垃圾箱中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28795842/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com