【发布时间】:2023-01-10 12:36:26
【问题描述】:
我在几个月内为用户设置了多个日期跨度,我想按月和年(默认为每月的第一天)将每个跨度拆分为多行,用户在跨度期间一直处于活动状态。活跃用户将有未来的结束日期记录被拆分到当前月份和年份
现有数据
| ID | Start date | end date |
|---|---|---|
| 1234 | 2019-01-01 | 2019-03-31 |
| 1234 | 2019-09-18 | 2020-01-31 |
| 1234 | 2022-11-15 | 2025-01-31 |
试图将以下日期月份查询放入跨度中
Select Top 500 mmdd=cast (dateadd(Month,-1+Row_Number() Over (Order By (Select NULL)),'2019-01-01') as date)
From master..spt_values n1
order by 1 asc
预期产出
| ID | active month |
|---|---|
| 1234 | 2019-01-01 |
| 1234 | 2019-02-01 |
| 1234 | 2019-03-01 |
| 1234 | 2019-09-01 |
| 1234 | 2019-10-01 |
| 1234 | 2019-11-01 |
| 1234 | 2019-12-01 |
| 1234 | 2020-01-01 |
| 1234 | 2022-11-01 |
| 1234 | 2022-12-01 |
| 1234 | 2023-01-01 |
【问题讨论】:
-
投资日历表
标签: sql sql-server