SQL Server带额外条件的间隔与孤岛:生成GroupDate列
需求说明
现有一张包含成员(Member)、日期(Date)、**服务次数(Service)列的数据表,其中Date列包含多年连续的每日数据,Service列记录对应成员当日获得的服务次数。需新增分组起始日期(GroupDate)**列,规则如下:
- 当成员当日有服务(
Service > 0)时触发分组,以该日期作为组的起始日期,该组覆盖起始日及后续连续4天(共5天); - 当前组的覆盖周期结束后,以上下一个满足
Service > 0的日期作为新组的起始,重复上述分组规则; - 未被任何组覆盖的日期,
GroupDate标记为NA。
示例表格
| 成员 | 日期 | 服务次数 | 分组起始日期 |
|---|---|---|---|
| Mary | 1/1 | 1 | 1/1 |
| Mary | 1/2 | 2 | 1/1 |
| Mary | 1/3 | 0 | 1/1 |
| Mary | 1/4 | 1 | 1/1 |
| Mary | 1/5 | 0 | 1/1 |
| Mary | 1/6 | 0 | NA |
| Mary | 1/7 | 0 | NA |
| Mary | 1/8 | 1 | 1/8 |
| Mary | 1/9 | 1 | 1/8 |
| Mary | 1/10 | 1 | 1/8 |
| Mary | 1/11 | 0 | 1/8 |
| Mary | 1/12 | 2 | 1/8 |
| Mary | 1/13 | 1 | 1/13 |
| Mary | 1/14 | 0 | 1/13 |
| Mary | 1/15 | 0 | 1/13 |
| Mary | 1/16 | 0 | 1/13 |
| Mary | 1/17 | 0 | 1/13 |
内容的提问来源于stack exchange,提问作者SQLQ
相关产品推荐
相关产品推荐

