网站名称是网址吗,数字营销策划,企业注册网站域名,项目管理软件系统在上一篇blog说到#xff0c;如何去优化查询连续值范围#xff0c;没看过的朋友#xff0c;上篇blog链接[在此]。(https://blog.csdn.net/weixin_42575078/article/details/135067645?spm1001.2014.3001.5501) 
那么今天来说说怎么将连续的数据合并#xff0c;然后返回合并…在上一篇blog说到如何去优化查询连续值范围没看过的朋友上篇blog链接[在此]。(https://blog.csdn.net/weixin_42575078/article/details/135067645?spm1001.2014.3001.5501) 
那么今天来说说怎么将连续的数据合并然后返回合并后的起止时间实验数据构造代码看上篇blog即可上篇blog链接[在此]。(https://blog.csdn.net/weixin_42575078/article/details/135067645?spm1001.2014.3001.5501) 比如前四个项目合并后起止时间就是1号和5号。 
select * from v;-----------------------------------------------接下来细分每个步骤写出这个SQL----------------------------------------------- 1、提取上一工程结束日期 
select proj_id as 编号,proj_start as 开始时间,proj_end as 结束时间,lag(proj_end) over(order by proj_id) as 上一工程结束时间from v;2、标记工程的连续状态 
with x0 as(
select proj_id as 编号,proj_start as 开始时间,proj_end as 结束时间,lag(proj_end) over(order by proj_id) as 上一工程结束时间
from v)
select 编号,开始时间,结束时间,上一工程结束时间,case when 开始时间  上一工程结束时间 then 0 else 1 end as 连续状态
from x0;3、将连续状态进行累加得到分组依据 
with x0 as(
select proj_id as 编号,proj_start as 开始时间,proj_end as 结束时间,lag(proj_end) over(order by proj_id) as 上一工程结束时间 from v),
x1 as(
select 编号,开始时间,结束时间,上一工程结束时间,case when 开始时间  上一工程结束时间 then 0 else 1 end as 连续状态 from x0)
select 编号,开始时间,结束时间,上一工程结束时间,连续状态,sum(连续状态) over(order by 编号) as 分组依据 from x1;4、根据分组依据即可统计出5个连续分组并求出起止时间 
with x0 as(
select proj_id as 编号,proj_start as 开始时间,proj_end as 结束时间,lag(proj_end) over(order by proj_id) as 上一工程结束时间 from v),
x1 as(
select 编号,开始时间,结束时间,上一工程结束时间,case when 开始时间  上一工程结束时间 then 0 else 1 end as 连续状态 from x0),
x2 as(
select 编号,开始时间,结束时间,上一工程结束时间,连续状态,sum(连续状态) over(order by 编号) as 分组依据 from x1)
select 分组依据,min(开始时间) as 开始时间,max(结束时间) as 结束时间 from x2 group by 分组依据 order by 1;今天的要点就是善用分析函数lag() over()感兴趣的朋友可以去做下实验。