如果中间有其他日期,则使用单独的组分组日期范围
Posted
技术标签:
【中文标题】如果中间有其他日期,则使用单独的组分组日期范围【英文标题】:Group Date ranges with separate groups if other date in between 【发布时间】:2020-10-21 08:30:45 【问题描述】:我有一个这样的表:
Specification Date
ADS 2020-09-04 00:00:00.000
ADS 2020-09-05 00:00:00.000
ADS 2020-09-06 00:00:00.000
AZR 2020-09-07 00:00:00.000
AZR 2020-09-08 00:00:00.000
ADS 2020-09-09 00:00:00.000
ADS 2020-09-10 00:00:00.000
我想选择一个开始日期和一个结束日期,并按规范对它们进行分组。 所以我的输出应该是这样的:
Specification Start End
ADS 2020-09-04 00:00:00.000 2020-09-06 00:00:00.000
AZR 2020-09-07 00:00:00.000 2020-09-08 00:00:00.000
ADS 2020-09-09 00:00:00.000 2020-09-10 00:00:00.000
我试过了:
select
Specification, MIN(Date) as Start, MAX(Date) as End
from CUSTOMERS
group by Specification
但这并没有给出我想要的结果。有人有想法吗?
【问题讨论】:
对这些数据运行查询的结果是什么? 【参考方案1】:您可以尝试以下方法 - 这是一个差距和孤岛问题
select col1, min(dateval) as start, max(dateval) as end
from
(
select *,row_number() over(order by dateval)-
row_number() over(partition by col1 order by dateval) as grp
from t
)A group by col1, grp
【讨论】:
效果很好!并感谢您指出这是一个差距和孤岛问题。以上是关于如果中间有其他日期,则使用单独的组分组日期范围的主要内容,如果未能解决你的问题,请参考以下文章