【发布时间】:2021-03-10 10:49:10
【问题描述】:
我正在尝试建立一对多的日期关系,因此将我当前的日期范围划分为每半年一次。
桶:0-6months、6-12months、12-18months、18-24months、+24months(考虑到重叠)
例子:
表格
| Name | Start_Date | End_Date |
|---|---|---|
| XYZ | 2020-01-01 | 2022-01-01 |
期望的输出
| Name | Start_Date | End_Date | Interval_Start_Date | Interval_End_Date | Date_Bucket |
|---|---|---|---|---|---|
| XYZ | 2020-01-01 | 2022-01-01 | 2020-01-01 (Start_Date) | 2020-06-30 | 0-6months |
| XYZ | 2020-01-01 | 2022-01-01 | 2020-07-01 | 2020-12-31 | 6-12months |
| XYZ | 2020-01-01 | 2022-01-01 | 2021-01-01 | 2021-06-30 | 12-18months |
| XYZ | 2020-01-01 | 2022-01-01 | 2021-07-01 | 2021-12-31 | 18-24months |
| XYZ | 2020-01-01 | 2022-01-01 | 2022-01-01 | 2022-01-01 (End_Date) | +24months |
我现在的代码:
select
a.name,
a.start_date,
a.end_date
from table a
它输出 [Table],还有更多行 - 目前仅在示例中显示一个。
【问题讨论】:
-
范围可以有多大?总是 2 年、2 年或更短时间、20 年?
-
@Larnu 一些范围可能超过 1000 天,因此超过 30 个月。所有这些范围都将被纳入 +24 个月的桶中。大多数在0-24个月之间。 2 年只是一个涵盖所有方面的示例。
-
另外,我必须承认,您的日期界限感觉“错误”。我希望第二个边界从
2020-06-01开始,而之前的结束在2020-05-31。否则,您的第一个边界是 6 个月零 1 天,而其余的 6 个月。 -
其实第一个边界只有5个月?
-
@Larnu 啊,我的错,我已经相应地编辑了表格。它涵盖了现在的重叠和错误统计
标签: sql sql-server