【发布时间】:2022-01-22 15:21:19
【问题描述】:
我正在尝试根据表中的日期列计算 StartDate 和 EndDate。 下面是源表的样子
场景 1
| ID | SERIAL_NUMBER | STATUS | READ_DT |
|---|---|---|---|
| 123456789 | 42007 | D | 15-12-2021 |
| 123456789 | 42007 | D | 16-12-2021 |
| 123456789 | 42007 | D | 17-12-2021 |
| 123456789 | 42007 | D | 18-12-2021 |
| 123456789 | 42007 | D | 19-12-2021 |
| 123456789 | 42007 | D | 20-12-2021 |
| 123456789 | 42007 | D | 21-12-2021 |
我想根据 READ_DT 计算 start_date 和 end_date,对于 ID 和 SERIAL_NUMBER,如果所有 READ_DT 都可用,则输出应如下所示
| ID | SERIAL_NUMBER | STATUS | Start_Date | End_Date |
|---|---|---|---|---|
| 123456789 | 42007 | D | 15-12-2021 | 21-12-2021 |
场景 2
| ID | SERIAL_NUMBER | STATUS | READ_DT |
|---|---|---|---|
| 123456789 | 42007 | D | 15-12-2021 |
| 123456789 | 42007 | D | 16-12-2021 |
| 123456789 | 42007 | D | 17-12-2021 |
| 123456789 | 42007 | D | 19-12-2021 |
| 123456789 | 42007 | D | 20-12-2021 |
| 123456789 | 42007 | D | 21-12-2021 |
如果 READ_DT 之间存在任何间隙,则预期输出应在如下两个事务中。
| ID | SERIAL_NUMBER | STATUS | Start_Date | End_Date |
|---|---|---|---|---|
| 123456789 | 42007 | D | 15-12-2021 | 17-12-2021 |
| 123456789 | 42007 | D | 19-12-2021 | 21-12-2021 |
【问题讨论】:
-
请同时包含您的最佳尝试查询
标签: sql sql-server tsql azure-sql-database